Python:如何从 2D 数组生成条形图

问题描述 投票:0回答:2

我有一个 2D 数组 (3x3),我想从每个行向量生成一个条形图,其中包含 3 个条形图,如下所示:http://www.flickr.com/photos/altaf009_forums/8265573801/

使用 MATLAB 'bar' 函数很容易,只需将数组作为参数传递,我如何在 python 中做到这一点?我还想要那些 xticklabels,如图所示。谢谢。

python
2个回答
2
投票

您可以从他们的网站改编(并简化)以下 Matplotlib 示例:http://matplotlib.org/examples/pylab_examples/barchart_demo.html.

enter image description here


0
投票

如果您有两个一维数组,您可以使用 Eric 的解决方案,但如果您想要 2D 数组的解决方案,您可以使用我用于绘制机器学习数据的代码:

def graph_probs( data ):
    
    num_groups, num_bars = data.shape

    x = np.arange( num_bars )

    bar_width = 0.15

    fig, ax = plt.subplots()

    for i in range( num_groups ):
        ax.bar( x + i * bar_width, data[i], width=bar_width, label=f'Image {i+1}')

    for i in x[1:]: 
        plt.axvline( x = i - 0.2, color='gray' )

    ax.set_xlabel( 'Label' )
    ax.set_ylabel( 'Probability' )
    ax.set_title( 'CNN Probabilities of each Image being a Label (1-9)')
    ax.set_xticks( x + bar_width * (num_groups - 1) / 2 )
    ax.set_xticklabels( [f'#{i+1}' for i in x] )
    ax.legend()

    plt.show()

生成的图像:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.