【问题标题】:Plotting Pandas Crosstab Dataframe into 3D bar chart将 Pandas 交叉表数据框绘制成 3D 条形图
【发布时间】:2019-05-28 06:17:51
【问题描述】:

我有一个数据框,其中包含国家的行名、编程语言的列名和显示计数的值,分别生成了我的 pandas 交叉表操作。

EG 

Language    C     C++     Java    Python    Perl

Country

USA          3222   343     2112   10110      89

France      5432   323     1019     678        789

Japan       7878   467       767     8788       40

我尝试过使用 gca 函数和投影 3d。我也尝试了this,但无法正常工作。

threedee = plt.figure().gca(projection='3d') <br/>
threedee.bar(repo_lang, repo_loc, repo_values) <br/>
threedee.set_xlabel('Index')<br/>
threedee.set_ylabel('H-L')<br/>
threedee.set_zlabel('Close')<br/>
plt.show()

我想显示一个 3D 条形图,其中两个轴可以是国家名称和语言,另一个是计数。

【问题讨论】:

    标签: pandas matplotlib


    【解决方案1】:

    试试这个:

    from mpl_toolkits.mplot3d import Axes3D
    
    # thickness of the bars
    dx, dy = .8, .8
    
    # prepare 3d axes
    fig = plt.figure(figsize=(10,6))
    ax = Axes3D(fig)
    
    # set up positions for the bars 
    xpos=np.arange(eg.shape[0])
    ypos=np.arange(eg.shape[1])
    
    # set the ticks in the middle of the bars
    ax.set_xticks(xpos + dx/2)
    ax.set_yticks(ypos + dy/2)
    
    # create meshgrid 
    # print xpos before and after this block if not clear
    xpos, ypos = np.meshgrid(xpos, ypos)
    xpos = xpos.flatten()
    ypos = ypos.flatten()
    
    # the bars starts from 0 attitude
    zpos=np.zeros(eg.shape).flatten()
    
    # the bars' heights
    dz = eg.values.ravel()
    
    # plot 
    ax.bar3d(xpos,ypos,zpos,dx,dy,dz)
    
    # put the column / index labels
    ax.w_yaxis.set_ticklabels(eg.columns)
    ax.w_xaxis.set_ticklabels(eg.index)
    
    # name the axes
    ax.set_xlabel('Country')
    ax.set_ylabel('Language')
    ax.set_zlabel('Count')
    
    plt.show()
    

    输出:

    【讨论】:

    • 这对我有用,你能解释一下你的代码吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-28
    • 1970-01-01
    • 2017-09-18
    • 2020-11-10
    相关资源
    最近更新 更多