Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python的奇怪行为';s Matplotlib模块-绘制圆_Python_Matplotlib - Fatal编程技术网

Python的奇怪行为';s Matplotlib模块-绘制圆

Python的奇怪行为';s Matplotlib模块-绘制圆,python,matplotlib,Python,Matplotlib,我目前正在编写一个程序,它必须生成一组绘图。每个图上必须有3个同心圆,其半径由数据集确定。此外,还必须添加另一个红色圆圈,该圆圈可以具有不同的中心。然而,我遇到了各种各样的问题。除非圆的半径太大,否则我应该在图上看到3个黑色和1个红色的圆,但我没有看到 我把构成情节的代码分离出来,这里是- import matplotlib.pyplot as plt fig1 = plt.figure(1, figsize=(6,6)) plt.xlim(-30,30) plt.ylim(-30,30)

我目前正在编写一个程序,它必须生成一组绘图。每个图上必须有3个同心圆,其半径由数据集确定。此外,还必须添加另一个红色圆圈,该圆圈可以具有不同的中心。然而,我遇到了各种各样的问题。除非圆的半径太大,否则我应该在图上看到3个黑色和1个红色的圆,但我没有看到

我把构成情节的代码分离出来,这里是-

import matplotlib.pyplot as plt

fig1 = plt.figure(1, figsize=(6,6))
plt.xlim(-30,30)
plt.ylim(-30,30)

rcircle1 = plt.Circle( (0,0), 6.0, edgecolor="black", facecolor="white")
rcircle2 = plt.Circle( (0,0), 12.0, edgecolor="black", facecolor="white")
rcircle3 = plt.Circle( (0,0), 18.0, edgecolor="black", facecolor="white")
bcircle = plt.Circle( (8.5,-5.8)  ,2,  edgecolor="red", facecolor="white")

ax = fig1.gca()
ax.add_artist(rcircle1)
ax.add_artist(rcircle2)
ax.add_artist(rcircle3)
ax.add_artist(bcircle)

fig1.savefig("Model.png", dpi=150)
以上的输出为-

我试图查看与
Circle()
add\u artist()
相关的各种类变量,但找不到可能影响此行为的内容

我目前的工作是以下代码-

import numpy as np
import matplotlib.pyplot as plt

th = np.arange(-3.14,3.14,0.01)

fig1 = plt.figure(1,figsize=(6,6))
plt.xlim(-30,30)
plt.ylim(-30,30)

plt.plot( 6*np.cos(th), 6*np.sin(th), color="black")
plt.plot( 12*np.cos(th), 12*np.sin(th), color="black")
plt.plot( 18*np.cos(th), 18*np.sin(th), color="black")
# (8,5, -5,8)
plt.plot( 2*np.cos(th) + 8.5, 2*np.sin(th) - 5.8, color="red")

fig1.savefig("Hard.png", dpi=150)
上面代码生成的输出正是我想要的


虽然这确实有效,但它无法在matplotlib中使用类似
Circle()
的方法。有人能解释为什么第一个代码没有像我期望的那样工作吗

您的问题是
facecolor
参数。最后添加的是最大的圆,它有一个不透明的中心

在第二个示例中,您正在绘制一条直线,而不是“填充”圆


更改添加圆圈的顺序(或提供一个
zorder
kwarg),或传入
facecolor='none'
(注意:是字符串
“none”
,而不是对象
none
)以获得一个“未填充”圆圈。

谢谢,乔。解决方案奏效了,只是没有意识到订单的重要性。我曾尝试为“alpha”输入一个值,但不知何故,这不起作用。我猜“alpha”不适用于这些类型的对象。也许我做错了什么。再次感谢。不管它值多少钱,
alpha
都可以正常工作。但是,它同时适用于matplotlib艺术家的填充和轮廓,因此,如果设置
alpha=0
,则不会绘制任何内容。不管怎样,很高兴你让它工作了!