将 Pandas 交叉表数据框绘制成 3D 条形图

saj*_*aya 0 matplotlib 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
Run Code Online (Sandbox Code Playgroud)

我曾尝试使用 gca 函数和投影 3d。我也试过这个,但无法让它工作。

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()
Run Code Online (Sandbox Code Playgroud)

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

Qua*_*ang 5

尝试这个:

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()
Run Code Online (Sandbox Code Playgroud)

输出:

在此处输入图片说明