Matplotlib:从条形图中获取颜色和 x/y 数据

noa*_*oam 6 python colors matplotlib bar-chart

我有一个条形图,我想获取它的颜色和 x/y 值。这是一个示例代码:

import matplotlib.pyplot as plt
def main():
    x_values = [1,2,3,4,5]
    y_values_1 = [1,2,3,4,5]
    y_values_2 = [2,4,6,8,10]
    f, ax = plt.subplots(1,1)
    ax.bar(x_values,y_values_2,color='r')
    ax.bar(x_values,y_values_1,color='b')
    #Any methods?
    plt.show()
if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

有没有 ax.get_xvalues(), ax.get_yvalues(), 之类的方法,ax.get_colors()我可以使用它,这样我就可以从ax列表中提取回来x_valuesy_values_1y_values_2以及颜色'r''b'

cph*_*wis 5

ax知道几何对象它的图纸,但没有关于它一直在添加这些几何对象的跟踪,当然不知道他们“中庸”:该补丁来自哪个酒吧,阴谋等编码器的需求跟踪以重新提取正确的部分以供进一步使用。执行此操作的方法在许多 Python 程序中都很常见:调用barplot返回 a BarContainer,您可以在当时命名并稍后使用:

import matplotlib.pyplot as plt
def main():
    x_values = [1,2,3,4,5]
    y_values_1 = [1,2,3,4,5]
    y_values_2 = [2,4,6,8,10]
    f, ax = plt.subplots(1,1)
    rbar = ax.bar(x_values,y_values_2,color='r')
    bbar = ax.bar(x_values,y_values_1,color='b')
    return rbar, bbar

if __name__ == '__main__':
    rbar, bbar = main()
    # do stuff with the barplot data:
    assert(rbar.patches[0].get_facecolor()==(1.0,0.,0.,1.)) 
    assert(rbar.patches[0].get_height()==2)
Run Code Online (Sandbox Code Playgroud)