2013-07-19 40 views
0

我在一個圖表上繪製了兩組數據,這些數據沿着x軸有氨基酸位置。有時測定1的值較小,有時測定2的值較小。我如何確保較低的值總是在前面?如何在前面的條形圖中保留較小的值(當我不能並排放置酒吧時)?

我正在使用python和matplotlib/pyplot。

現在我加入了兩個柱狀圖爲:

p1 = plot.bar(x1, y1, color='r', alpha=1, edgecolor='none',linewidth=0,width=0.5, log=False) 
p2 = plot.bar(x2, y2, color='b', alpha=1, edgecolor='none', linewidth=0,width=0.5, log=False) 

謝謝!

回答

1

可以使用numpy.ma模塊定義口罩:

import numpy.ma as ma 

mask1 = ma.where(y1>=y2) 
mask2 = ma.where(y2>=y1) 

p1 = plt.bar(x1[mask1], y1[mask1], color='r', alpha=1, edgecolor='none',linewidth=0,width=0.5, log=False) 
p2 = plt.bar(x2, y2, color='b', alpha=1, edgecolor='none', linewidth=0,width=0.5, log=False) 
p3 = plt.bar(x1[mask2], y1[mask2], color='r', alpha=1, edgecolor='none',linewidth=0,width=0.5, log=False) 

例子:

import matplotlib.pyplot as plt 
import numpy as np 
import numpy.ma as ma 

x1 = x2 = np.arange(5) 
y1 = np.array([1,4,25,2,4]) 
y2 = np.array([4,2,3,32,6]) 

mask1 = ma.where(y1>=y2) 
mask2 = ma.where(y2>=y1) 

p1 = plt.bar(x1[mask1], y1[mask1], color='r', alpha=1, edgecolor='none',linewidth=0,width=0.5, log=False) 
p2 = plt.bar(x2, y2, color='b', alpha=1, edgecolor='none', linewidth=0,width=0.5, log=False) 
p3 = plt.bar(x1[mask2], y1[mask2], color='r', alpha=1, edgecolor='none',linewidth=0,width=0.5, log=False) 

enter image description here

+0

謝謝!這工作完美! – burkesquires

相關問題