Matplotlib 极坐标图中的箭头

4
我正在尝试绘制串联R-L-C电路中电阻器、电容器和电感器电压的相量图。我已经完成了所有计算,只用普通的ax.plot(theta,r,....)就可以得到一个不错的图表。
我想让相量向量看起来像箭头。我一直在试图使用ax.arrow(0,0,theta,magnitude),但它看起来仍然是一条线。我编写的代码概要在这里: GIST 我创建的图像是 我试图按照我在这个列表上找到的示例进行操作,因为它非常类似于我想要实现的内容,它产生了以下图像: 当我在我的计算机上运行他们的代码时,我得到的是: 我使用的是Xubuntu 14.04,并运行matplotlib 1.3.1。我看到我正在使用的示例是在2009年使用matplotlib 0.99。
非常感谢您的帮助。
1个回答

5
箭头的大小太大了,应该改成这样:
import matplotlib
import numpy as np
import matplotlib.pyplot as plt

print "matplotlib.__version__   = ", matplotlib.__version__
print "matplotlib.get_backend() = ", matplotlib.get_backend()


# radar green, solid grid lines
plt.rc('grid', color='#316931', linewidth=1, linestyle='-')
plt.rc('xtick', labelsize=15)
plt.rc('ytick', labelsize=15)

# force square figure and square axes looks better for polar, IMO
width, height = matplotlib.rcParams['figure.figsize']
size = min(width, height)
# make a square figure
fig = plt.figure(figsize=(size, size))
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8], polar=True, axisbg='#d5de9c')

r = np.arange(0, 3.0, 0.01)
theta = 2*np.pi*r
ax.plot(theta, r, color='#ee8d18', lw=3)
ax.set_rmax(2.0)
plt.grid(True)

ax.set_title("And there was much rejoicing!", fontsize=20)
#This is the line I added:
arr1 = plt.arrow(0, 0.5, 0, 1, alpha = 0.5, width = 0.015,
                 edgecolor = 'black', facecolor = 'green', lw = 2, zorder = 5)

# arrow at 45 degree
arr2 = plt.arrow(45/180.*np.pi, 0.5, 0, 1, alpha = 0.5, width = 0.015,
                 edgecolor = 'black', facecolor = 'green', lw = 2, zorder = 5)

plt.show()

生成:

在这里输入图片描述

更好了吗? :)


谢谢您的回复,我现在明白了宽度的设置,并且对我有用,但是我现在想将其应用到我的相量图中。我有以下代码用于绘制相量:ax.arrow(LV.theta[1],0,0,LV.mag[1], width=0.005,length_includes_head=True,edgecolor = 'black', facecolor = 'green', lw = 2, zorder = 5)现在的图像看起来像这样Diagram - Jesse
我现在意识到我没有正确设置 head_length 属性。 - Jesse

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接