2017-06-22 9 views
1

matplotlibのbroken_barhでハッチングを使用したいと思います。私が望むのは、プロット内の異なる色のために異なる孵化パターンを持つことです。私は辞書として追加しようとしましたが、成功しなかった、誰が正しい方法が分かっていますか? これはmatplotlibのウェブサイトのサンプルコードです。matplotlibのpythonでbroken_barhを孵化する方法は?

「」 『すなわち、ギャップを有するものを水平バープロット 「壊れた『 ください』』」

import matplotlib.pyplot as plt 

fig, ax = plt.subplots() 
ax.broken_barh([(110, 30), (150, 10)], (10, 9), facecolors='blue', hatch='o') 
ax.broken_barh([(10, 50), (100, 20), (130, 10)], (20, 9), 
       facecolors=('red', 'yellow', 'green'), hatch='//') 
ax.set_ylim(5, 35) 
ax.set_xlim(0, 200) 
ax.set_xlabel('seconds since start') 
ax.set_yticks([15, 25]) 
ax.set_yticklabels(['Bill', 'Jim']) 
ax.grid(True) 
ax.annotate('race interrupted', (61, 25), 
      xytext=(0.8, 0.9), textcoords='axes fraction', 
      arrowprops=dict(facecolor='black', shrink=0.05), 
      fontsize=16, 
      horizontalalignment='right', verticalalignment='top') 

plt.show() 

を私は別の色ごとに異なるハッチングを持つようにしたいが、それは不可能です。
I want to have different hatching for different color, but it is not possible

誰かが私にそれをどうやってヒントを与えることができたらうれしいですか?

答えて

3

broken_barh異なるハッチを設定することはできません。しかし、壊れたバーは単なるバーの数が多いため、異なるハッチングを持つ単一のバーをプロットすることができます。

import matplotlib.pyplot as plt 

def brokenhatchbar(xs, y, ax=None, **kw): 
    if not ax: ax=plt.gca() 
    hatches = kw.pop("hatch", [None]*len(xs)) 
    facecolors = kw.pop("facecolors", [None]*len(xs)) 
    edgecolors = kw.pop("edgecolors", [None]*len(xs)) 
    for i, x in enumerate(xs): 
     ax.barh(bottom=y[0], width=x[1], height=y[1], left=x[0], 
       facecolor=facecolors[i], edgecolor=edgecolors[i], hatch=hatches[i]) 

fig, ax = plt.subplots() 
brokenhatchbar([(110, 30), (150, 10)], (10, 9), facecolors=['blue','blue'], hatch=['o','////']) 
brokenhatchbar([(10, 50), (100, 20), (130, 10)], (20, 9), 
       facecolors=('red', 'yellow', 'green'), hatch=('//', 'o', '+')) 
ax.set_ylim(5, 35) 
ax.set_xlim(0, 200) 
ax.set_xlabel('seconds since start') 

ax.grid(True) 

plt.show() 

enter image description here

+0

おかげで、間違いなくこれは私の問題を解決します。本当に感謝。 – Masoud

関連する問題