matplotlib中的透明轴.axhline是什么?

5

我正在尝试向我的坐标轴添加一条水平线,以标记一个重要的y值,因此我使用了以下代码:

fig = Figure(figsize=(5, 5))
ax = fig.add_axes((0.2, 0.2, 0.6, 0.6))
ax.plot(...)
ax.axhline(100000, xmin=0, xmax=1, linewidth=0.3, color=(0, 0, 0, 0.75))
canvas = FigureCanvasAgg(fig)
canvas.print_figure("chart.pdf", dpi=300)

然而我有一些问题:

  • linewidth的单位是什么?是points吗?
  • 线似乎不尊重我的颜色中的alpha值。当a = 0 时,它是透明的,当a > 0时,它是不透明的,没有半透明效果。这是一个bug还是我做错了什么?

我正在使用:

Mac OSX 10.6.7,Python 2.7,matplotlib 1.0.1,numpy 1.5.1

1个回答

8

Linewidth(线宽)以点(point)为单位。

使用matplotlib 1.0+时,透明度对我来说是有效的。以下是我用于测试的代码:

from matplotlib import pyplot as plt
import numpy as np

x = np.arange(0,10,.1)
y = np.sin(x)
plt.plot(x,y)
ax = plt.gca()
ax.axhline(.4, xmin=0, xmax=1, linewidth=0.3, color=(0, 0, 0, 0.75))
plt.show()

你试图在哪个绘图上绘制“axhline”?可能与特定类型的绘图存在冲突。

1
这很奇怪,对我来说我必须使用 ax.axhline(.4, xmin=0, xmax=10, linewidth=0.3, color=(0, 0, 0), alpha=0.75)。我添加了更多的代码以便在我的问题中提供上下文。 - bradley.ayers
1
啊,原来如此。将xmax=1修正了。看起来你发现了一个bug。我通常不会报告bug,所以无法提供建议。如果你在帖子中发布你的版本、操作系统和能够重现问题的代码,也许它会引起一些关注。 - Paul

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