繁体   English   中英

沿圆弧旋转 plot 中的标记 matplotlib

[英]rotate markers in a plot along an arc matplotlib

我正在尝试使用以下代码使用 matplotlib 代码 plot 委内瑞拉国旗:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patch

a = patch.Rectangle((0,1), width = 12, height = 2, facecolor = '#E41F26', edgecolor = 'grey')
b = patch.Rectangle((0,3), width = 12, height = 2, facecolor = '#253D99', edgecolor = 'grey')
c = patch.Rectangle((0,5), width = 12, height = 2, facecolor = '#FDCC02', edgecolor = 'grey')

m, n = plt.subplots()

n.add_patch(a)
n.add_patch(b)
n.add_patch(c)
plt.plot(6,4, markersize = 9.5)

x = np.linspace(3, 9, 8)
y = np.concatenate((np.linspace(3.5, 4.5, 4), np.linspace(4.5, 3.5, 4)))

for (p, q) in zip (x, y):
    n.plot(p, q, marker=(5, 1, q*10), color='white', markersize=35)

plt.show()

我想调整星星的旋转,如下图关于委内瑞拉国旗

在您的代码中,由于您使用的是等距序列,因此星形排列在一条直线上。 所以我创建了 xy 坐标来画一个圆,并使用上半圆来放置星星。 此外,从阵列中部分检索必要数量的星并合并,以便顶点在旋转角度为零。 如果我错了,请纠正我。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patch

a = patch.Rectangle((0,1), width = 12, height = 2, facecolor = '#E41F26', edgecolor = 'grey')
b = patch.Rectangle((0,3), width = 12, height = 2, facecolor = '#253D99', edgecolor = 'grey')
c = patch.Rectangle((0,5), width = 12, height = 2, facecolor = '#FDCC02', edgecolor = 'grey')
fig, ax = plt.subplots()

ax.add_patch(a)
ax.add_patch(b)
ax.add_patch(c)

n = 23
center = (6,2)
radius = 2.5
theta = np.linspace(0, 2*np.pi, n)
x = center[0] + radius * np.cos(theta)
y = center[1] + radius * np.sin(theta)

rotate = np.arange(0,360,360/23)
rotate = np.append(rotate[:4][::-1], rotate[:4]*-1)

for (p, q, i) in zip(reversed(x[2:10]), reversed(y[2:10]), rotate):
    ax.plot(p, q, marker=(5, 1, i), color='white', markersize=15)

for pos in ['right','left','top','bottom']:
    ax.spines[pos].set_visible(False)
ax.set_xticks([])
ax.set_yticks([])
plt.show()

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM