我知道如何更改一行的开/关墨点顺序,我想对没有填充的圆做同样的事情。圆圈似乎没有相同的set_dashes()函数,并且set_linestyle()只接受像'solid'这样的字符串,但不接受(在刻度线上,关闭刻度线)的元组。
这是一个最小的例子,我希望圆圈具有与线图相同的破折号。
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Circle
fig = plt.figure()
ax = fig.add_subplot(111)
# plot a line with dashes
line = plt.plot(np.arange(2))[0]
plt.setp(line, 'dashes')
line.set_dashes((20,2))
# plot a circle with dashes
circle = Circle(xy=(0,0), radius=1, fill=False, ec='b', lw=2, linestyle='dashed')
plt.setp(circle, 'linestyle')
ax.add_artist(circle)
plt.show()
答案 0 :(得分:0)
最简单的方法是手动生成圆圈的点数'。这是一个最低限度的例子:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Circle
fig = plt.figure()
ax = fig.add_subplot(111)
# plot a line with dashes
line = plt.plot(np.arange(2))[0]
plt.setp(line, 'dashes')
line.set_dashes((20,2))
# plot a circle with dashes
Radius = 1
xC = np.linspace(0, Radius, 100)
yC = np.sqrt(Radius**2 - xC**2)
line = plt.plot(xC, yC)[0]
plt.setp(line, 'dashes')
line.set_dashes((20,2))
plt.show()
可以轻松地进行一些改进 - 您可能已经考虑过这些但我认为我会添加它们以防万一。首先要让圈子成为“循环”。我们应该使用相等的方面轴:
fig = plt.figure()
ax = fig.add_subplot(111, aspect='equal')
然后你可能想要绘制圆的整个范围。这最容易通过分别绘制双方来完成:
# plot a circle with dashes
Radius = 1
xC = np.linspace(-Radius, Radius, 100)
yC_positive = np.sqrt(Radius**2 - xC**2)
yC_negative = -np.sqrt(Radius**2 - xC**2)
line = plt.plot(xC, yC_positive)[0]
plt.setp(line, 'dashes')
line.set_dashes((20,2))
line = plt.plot(xC, yC_negative)[0]
plt.setp(line, 'dashes')
line.set_dashes((20,2))
把所有这些放在一起我们得到了
我故意让双方的颜色不同,以表明哪一个是哪个。