使用matplotlib中的补丁

时间:2018-08-08 16:58:57

标签: python matplotlib

如何使用Patches在下图中的外圆(左上)内绘制X?我不想绘制数据点,因为轴限制可能会改变(我正在另一个图形中绘制它),或者当我尝试使用text时,字体看起来很奇怪。我有这个

f = plt.figure(figsize=(6, 6))
ax = f.add_subplot(111)

box = ax.get_position()
axColor = plt.axes([box.x0 + 0.05, box.y0 + 0.05,
                    0.6, 0.6], projection='polar')

axColor.set_yticks([])
axColor.set_xticks([])
axColor.set_rlim(0, 50)

circle = plt.Circle((0., 0.), 10, transform=axColor.transData._b,
                   edgecolor='k', facecolor='None', linewidth=2)
axColor.add_artist(circle)
circle = plt.Circle((0., 0.), 3, transform=axColor.transData._b, 
                   color='k', linewidth=2)
axColor.add_artist(circle)

circle = plt.Circle((-0.02, 0.9), 0.1, transform=axColor.transAxes,
                   edgecolor='k', facecolor='None', linewidth=2, clip_on=False)
axColor.add_artist(circle)
# Cannot draw an X

图像是

enter image description here

1 个答案:

答案 0 :(得分:1)

在您的绘图上绘制x的简单快捷方法是使用plt.scatter。您可以使用x标记将x放置在您所拥有的圆的中心。检查以下代码,它将x绘制在最左圆的中心。您需要为标记提供的坐标与创建圆时传递的相对坐标相同。

import matplotlib.pyplot as plt

f = plt.figure(figsize=(6, 6))
ax = f.add_subplot(111)

box = ax.get_position()
axColor = plt.axes([box.x0 + 0.05, box.y0 + 0.05,
                    0.6, 0.6], projection='polar')

axColor.set_yticks([])
axColor.set_xticks([])
axColor.set_rlim(0, 50)

circle = plt.Circle((0., 0.), 10, transform=axColor.transData._b,
                   edgecolor='k', facecolor='None', linewidth=2)
axColor.add_artist(circle)
circle = plt.Circle((0., 0.), 3, transform=axColor.transData._b, 
                   color='k', linewidth=2)
axColor.add_artist(circle)

circle = plt.Circle((-0.02, 0.9), 0.1, transform=axColor.transAxes,
                   edgecolor='k', facecolor='None', linewidth=2, clip_on=False)

axColor.add_artist(circle)


mymarker = plt.scatter(-0.02, 0.9, s=300, c='red', transform=axColor.transAxes, marker='x', clip_on=False)
axColor.add_artist(mymarker)



f.savefig('plot_with_x.png')

我还在这里附上了图片。您可以通过调整s的值来调整标记的大小,并使用c更改颜色。 希望这会有所帮助。

Image with x on the circle