6
繪製兩個柱狀圖當比方說,我有兩個柱狀圖和我使用HIST的參數設置不透明度誤導:「阿爾法= 0.5」不透明度,同時與matplotlib
我策劃了兩個柱狀圖但我得到三個顏色!我從不透明的角度理解這是有道理的。
但是!向某人展示三種顏色的兩件事物的圖形是非常令人困惑的。我能以某種方式將每個垃圾箱的最小欄設置在前面,並且沒有不透明度嗎?
實施例圖
繪製兩個柱狀圖當比方說,我有兩個柱狀圖和我使用HIST的參數設置不透明度誤導:「阿爾法= 0.5」不透明度,同時與matplotlib
我策劃了兩個柱狀圖但我得到三個顏色!我從不透明的角度理解這是有道理的。
但是!向某人展示三種顏色的兩件事物的圖形是非常令人困惑的。我能以某種方式將每個垃圾箱的最小欄設置在前面,並且沒有不透明度嗎?
實施例圖
通常的方法這一問題的處理是有一個與一些小的分離的圖。這是在默認情況下,當plt.hist
給出多組數據來完成:
import pylab as plt
x = 200 + 25*plt.randn(1000)
y = 150 + 25*plt.randn(1000)
n, bins, patches = plt.hist([x, y])
你,而不是其中堆疊起來(這可能上面使用參數histtype='barstacked'
來完成),但要注意的是,排序是不正確。
這可以通過單獨檢查每對點來查看哪一個較大,然後使用zorder
來設置哪一個先到位。爲了簡單起見,我使用上面的代碼的輸出(例如,n是每個箱中的點的數目的兩個堆疊的陣列爲x和y):
n_x = n[0]
n_y = n[1]
for i in range(len(n[0])):
if n_x[i] > n_y[i]:
zorder=1
else:
zorder=0
plt.bar(bins[:-1][i], n_x[i], width=10)
plt.bar(bins[:-1][i], n_y[i], width=10, color="g", zorder=zorder)
這裏是所得到的圖像:
通過改變像這樣的順序,圖像確實看起來很奇怪,這可能是爲什麼它沒有實現,並需要一個黑客來做到這一點。我會堅持使用小分離方法,任何習慣這些圖的人都會假設他們採用相同的x值。
如果你實際上不想要'alpha <1',而不是確定白色上的半透明顏色是什麼顏色,並且使用了不透明的顏色條。 – tacaswell
您應該包含您用於生成繪圖的代碼,因爲較少的人可能會爲您編寫整個代碼,而不是修復現有的代碼。 – hooy
您用來生成此圖表的代碼是什麼? –