如何在 matplotlib python 上孵化 broken_barh?
How to hatch broken_barh on matplotlib python?
我想在 matplotlib 的 broken_barh 中使用阴影线。我想要的是让情节中的不同颜色具有不同的阴影图案。我试图添加为字典但没有成功,有人知道正确的方法是什么吗?
这是来自 matplotlib 网站的示例代码。
"""
制作一个 "broken" 水平条形图,即带有间隙的条形图
"""
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()
我想为不同的颜色设置不同的阴影线,但是不可能:
如果有人能给我提示如何做,我将不胜感激?
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()
我想在 matplotlib 的 broken_barh 中使用阴影线。我想要的是让情节中的不同颜色具有不同的阴影图案。我试图添加为字典但没有成功,有人知道正确的方法是什么吗? 这是来自 matplotlib 网站的示例代码。
""" 制作一个 "broken" 水平条形图,即带有间隙的条形图 """
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()
我想为不同的颜色设置不同的阴影线,但是不可能:
如果有人能给我提示如何做,我将不胜感激?
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()