簡體   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