问题描述
import matplotlib.pyplot as plt
def makes(self,fractal):
if (fractal == "SierpinskiTriangle"):
SierpinskiTriangle(self.dimensions)
for i in range(len(SierpinskiTriangle.verticies)):
plotPoint(i,self.vertexColor,self.vertexRadius)
for i in range(SierpinskiTriangle.numPoints):
listVertices = SierpinskiTriangle.verticies
randVert = randint(0,len(listVertices)-1)
newVertexPoint = listVertices[randVert]
m1 = Point.midpt(m1,newVertexPoint)
self.plot(m1)
elif (fractal == "SierpinskiCarpet"):
SierpinskiCarpet(self.dimensions)
for i in range(len(SierpinskiCarpet.verticies)):
plotPoint(i,self.vertexRadius)
for i in range(SierpinskiCarpet.numPoints):
listVertices = SierpinskiCarpet
randVert = randint(0,newVertexPoint)
self.plot(m1)
else:
Pentagon(self.dimensions)
for i in range(len(Pentagon.verticies)):
plotPoint(i,self.vertexRadius)
for i in range(Pentagon.numPoints):
listVertices = SierpinskiCarpet
randVert = randint(0,newVertexPoint)
self.plot(m1)
最后我不知道如何可视化分形。
我认为它与 matplot.lib 有关,但我不确定如何
解决方法
虽然 matplotplib
主要适用于绘制图形,但如果您愿意,您也可以使用它绘制点和多边形;另见:How to draw a triangle using matplotlib.pyplot based on 3 dots (x,y) in 2D?
例如,要从多边形组成一个 Sierpinski triangle,并将这些多边形绘制到图形上:
import numpy as np
import matplotlib.pyplot as plt
MAX_LEVEL = 6
def sierpinski(p1,p2,p3,level=0):
if level >= MAX_LEVEL:
yield plt.Polygon([p1,p3],color='red')
return
yield from sierpinski(p1,(p1+p2) / 2,(p1+p3) / 2,level+1)
yield from sierpinski((p1+p2) / 2,(p2+p3) / 2,level+1)
yield from sierpinski((p1+p3) / 2,level+1)
plt.figure()
plt.scatter([0,10,10],[0,color='blue')
for patch in sierpinski(
np.array([1.0,1.0]),np.array([9.0,np.array([5.0,9.0])):
plt.gca().add_patch(patch)
plt.show()
上面的代码为我生成了以下图像输出: