matplotlib 无法在没有fillcolor的情况下绘制椭圆

hlswsv35  于 2023-10-24  发布在  其他
关注(0)|答案(1)|浏览(98)

我真的不能得到这个,我需要将一个椭圆绘制到一个图像上。问题是用matplotlib.patches绘制椭圆,但最终得到一个白色图形或填充椭圆。代码非常原始,我不知道该怎么做,因为我从来没有使用过matplotlib库的这一部分。

import matplotlib.pyplot as plt
import numpy.random as rnd
from matplotlib.patches import Ellipse

ells = [Ellipse(xy=[0,0], width=30, height=10, angle=0,edgecolor='b', lw=4)]

fig = plt.figure(0)
ax = fig.add_subplot(111, aspect='equal')
for e in ells:
    ax.add_artist(e)
    e.set_alpha(1)
    e.set_facecolor(none) #obvious mistake, but no idea what to do

ax.set_xlim(-100, 100)
ax.set_ylim(-100, 100)

plt.show()

我试着查找matplotlib.patches页面,但是没有关于如何绘制椭圆的明确信息,只是使用的函数。

whlutmcx

whlutmcx1#

一般来说,如果要在matplotlib中为参数指定任何颜色,请使用字符串'none'。这同样适用于边缘颜色,面颜色等。
在您的案例中:

import matplotlib.pyplot as plt
from matplotlib.patches import Ellipse

fig, ax = plt.subplots()

ax.axis('equal')
ell = Ellipse(xy=[0,0], width=30, height=10, angle=0,
              edgecolor='b', lw=4, facecolor='none')

ax.add_artist(ell)
ax.set(xlim=[-100, 100], ylim=[-100, 100])

plt.show()

对于特定的填充,您也可以使用fill=False,正如@M4rtini在评论中指出的那样。在matplotlib中,使用set(foo=bar)set_foo(bar)方法通常与传入kwarg foo=bar相同。例如:

import matplotlib.pyplot as plt
from matplotlib.patches import Ellipse

fig, ax = plt.subplots()

ax.axis('equal')
ell = Ellipse(xy=[0,0], width=30, height=10, angle=0,
              edgecolor='b', lw=4, fill=False)

ax.add_artist(ell)
ax.set(xlim=[-100, 100], ylim=[-100, 100])

plt.show()

相关问题