【问题标题】:Can't plot ellipse in python without fillcolor无法在没有填充颜色的情况下在 python 中绘制椭圆
【发布时间】:2016-01-11 14:08:56
【问题描述】:

我真的无法得到这个,我需要在图像上叠加一个椭圆。问题是用 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 页面,但没有关于如何绘制椭圆的明确信息,只是使用的函数。

非常感谢一些帮助。

感谢您的宝贵时间。

【问题讨论】:

  • 尝试将N大写为None,它应该可以这样工作。
  • @MadPhysicist - 这将导致 facecolor 使用默认的蓝色(当前行为)。要在 matplotlib 中不指定颜色,请使用字符串 'none'
  • 学到了一些新东西。无论哪种方式,OP 都在正确的轨道上,只差一两个角色。
  • e.set_fill(False) 如果目标是一个“未填充”的椭圆

标签: python matplotlib plot ellipse


【解决方案1】:

通常,要在 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,如 cmets 中的@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()

【讨论】:

  • 非常感谢,工作完美!我不认为将“无”作为一种颜色,而不是作为一种命令。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-17
  • 1970-01-01
  • 2013-03-26
  • 2015-02-19
  • 1970-01-01
  • 1970-01-01
  • 2012-12-12
相关资源
最近更新 更多