我試圖創建一個具有以下部件一個情節:在matplotlib誤差條數圖不起作用
- 散點圖
- 與誤差條最佳擬合線。
- Y縮放爲日誌。
所以這是一個標準的對數線性圖保存到PNG,但雖然我可以得到散點圖工作,我無法得到擬合的線在圖上繪製。我只是得到一個blob。這裏是我使用的代碼:
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111, xlim=(-2,2), ylim=(1,10E11))
ax.scatter(x, y, s=1, c='black')
line, = ax.semilogy([-0.5, 1], [-0.5*m+c, 1.0*m + c], color='red', linestyle='-', linewidth=2)
ax.errorbar(-0.5, -0.5*m+c, yerr=ser, marker='o', color='red')
ax.errorbar(1, m * 1.0 + c, yerr=ser, marker='o', color='green')
ax.set_yscale('log')
fig.savefig('log.png')
我得到了散點圖。和對數刻度,但不是擬合線或誤差條。
x = np.array(x)
y = np.array(y)
~50,000 points
m = gradient = 2.38329162e+09
c = 1.24269722e+09
我試過很多變化,但我似乎無法得到正確的繪製線。我找不到具有對數刻度的錯誤條形圖的一個示例。
作爲更新,我終於可以獲得該行的工作。這是由於y低於零。不過,我仍然無法獲得繪製的誤差線。我只能得到一條鬍鬚線(不是四條),也沒有水平接合線。
matplotlib版本:1.2.0
請提供範例'x','y','m'和'c'。 – Ffisegydd
您不能在對數刻度中使用負數,而「c-m」爲負數。實際上有點;)你在'ylim'中設置你的下限爲1 – hitzg
@hitzg我期待着matplotlib能夠處理這個問題並且繪製它的可能性,但是這一定是把扳手扔在作品中的問題。 Duhh! – disruptive