Matplotlib中透明的axes.axhline?

5 投票
1 回答
6019 浏览
提问于 2025-04-16 15:14

我想在我的坐标轴上加一条横线,以标记一个重要的 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)

不过我遇到了一些问题:

  • 这个线宽的单位是什么?是点吗?
  • 这条线似乎没有按照我颜色中的透明度来显示。当 a = 0 时,它是透明的,而当 a > 0 时,它是完全不透明的,没有半透明的效果。这是个bug,还是我做错了什么?

我使用的是:

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

1 个回答

8

线宽是以点为单位的。

我在使用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呢?可能和某种特定类型的图有冲突。

撰写回答