matplotlib 如何排列多边形中的点?

jum4pzuy  于 2022-11-15  发布在  其他
关注(0)|答案(1)|浏览(107)
import matplotlib.pyplot as plt
import numpy as np

plt.style.use('_mpl-gallery')
fig, ax = plt.subplots()
y = np.arange(0,10,.01)
x1 = y / np.sqrt(3)
x2 = (y - (5 * np.sqrt(3))) / (-np.sqrt(3))

plt.xlim(0,5)
plt.ylim(0,5)

poly = ax.fill_betweenx(y,x1,x2,where= y <= 2.5*np.sqrt(3))

plt.show(plot)

到目前为止,我所能做的就是创建多边形本身。我正在尝试在三角形中放置一个点列表。我正在尝试从YouTube上的Numberphile的混沌游戏视频中重新创建谢尔宾斯基三角形。我想创建一个点数组,我可以将其绘制到一个具有已知顶点的三角形上。我只是不确定我所用的方法是否正确或有效。
我尝试使用PolyCollection文档,但是我收到了错误,比如我使用了错误的属性和不正确的函数,我对python很陌生,所以我不确定如何在函数get_closed()或get_path()之前将这些东西放在一起。

xxls0lw8

xxls0lw81#

import matplotlib.pyplot as plt
import numpy as np

def mid_point(p1, p2):
    # calculating mid_point
    return (p1 + p2)/2

# define A, B and C vertexes
pa = [2.5, 4.5]
pb = [5.0, 0.0]
pc = [0.2, 0.5]

# number iterations
ni = 1000

# markers/points properties
color = 'blue'
marker_size = 1

# vertexes points
vert = np.array([pa, pb, pc])

# starting point at AB line
start_point = mid_point(vert[0], vert[1])

# plot A, B, C
fig, ax = plt.subplots()
ax.plot(vert[:, 0], vert[:, 1], 
        ls='', 
        marker='o', 
        c=color, 
        markersize=marker_size)

# matrix others points
others = np.zeros((ni+1, 2))
others[0] = start_point 
for i in range(ni):
    chosen = np.random.randint(0, 3)
    others[i+1] = mid_point(others[i], vert[chosen])

# plot others points
ax.plot(others[:, 0], others[:, 1], 
        ls='', 
        marker='o', 
        c=color, 
        markersize=marker_size)

plt.show()

相关问题