【发布时间】:2017-05-14 13:51:26
【问题描述】:
如何调整条形图条的宽度。这篇文章附上了一张图片,显示了实际情况。正如我们可以看到的标签,显示年份,从 2011 年到 2015 年。
我正在寻找一种解决方案来减小沿 y 轴的各个条的宽度。我尝试了许多随机解决方案,这些解决方案可以在线获取,但没有任何效果。
给定的图像实际上是 3D 图形,但由于视图清晰,仅显示了 2D 图片。
请帮忙:
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import cm
data = np.array([[0,6,3,0,0,0,0,0,0,0,0,2,2,3,0,2,2,3,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,2,2,0,0,0,0,0,0,0,2],
[3,3,5,3,3,0,0,0,0,0,0,0,0,0,3,4,0,0,4,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,2,0,0],
[0,0,7,5,0,10,5,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,2,4,3,3,2,0,0,0,0,0,3,2,3,2,3,0,0,0,0,0,0,0,0,3,0],
[0,0,0,4,0,2,3,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0],
[5,0,2,2,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,5,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0], ])
#data = data.transpose()
row_names = ['Ch','Bi','Ba','Ho','Ja','Pu','N','Ga','Ke','Ma','Me','Ti','Ka','Th','Di','Wa','Ha','My','Tu','Ma','Bi','Ut Ka','Ra','Da','Ch','Ko','B','Bid','Gu','D&N','Ra','Pu','San','Dhu','Jal','Gon','Gand','Alw','Jal','SAS','Gur','Pat','Hos','Lu','Pan','Kur','Jan']
column_names = ["2011","2012","2013","2014","2015"]
fig = plt.figure()
ax = Axes3D(fig)
xpos = np.arange(0,lx,1)
ypos = np.arange(0,ly,1)
xpos, ypos = np.meshgrid(xpos+0.5, ypos+0.5)
xpos = xpos.flatten()
ypos = ypos.flatten()
zpos = np.ones(lx*ly)*1e-10
dx = 1. * np.ones_like(zpos)
dy = dx.copy()
dz = data.flatten()
print dz
cs = ['r', 'g', 'b', 'y', 'c'] * ly
values = np.linspace(0.2, 1., xpos.ravel().shape[0])
colors = cm.rainbow(values)
ticksx = np.arange(1, len(row_names)+1,1)
plt.xticks(ticksx, row_names)
z_data = np.random.rand(0,10)
ticksy = np.arange(0.5, len(column_names),1)
plt.yticks(ticksy, column_names)
#ax.tick_params(width=2, colors='r')
ax.w_xaxis.set_ticklabels(row_names,rotation=90,size=12)
ax.w_yaxis.set_ticklabels(column_names,rotation=40,size=12)
ax.bar3d(xpos,ypos,zpos, dx, dy, dz, alpha=0.7, zsort='max',color=colors)
plt.ion()
plt.show()
raw_input(" " )
更新: 将“dx”值从 1 减少到 0.5,减少了条形宽度,但现在它显示了条形之间的巨大填充,我想完全删除。
最后更新: 我又附上了一张图片。我期待这种 3D 条形图具有减小的条形宽度(完成),并最小化条形之间的间隙。
【问题讨论】:
-
问题与stackoverflow.com/questions/43954511/…相同,请删除其中一个。
-
This question 似乎是相关的,因为它使用相同的数据并且已经解决了条形宽度的问题。
-
删除之前的谢谢
标签: python matplotlib matplotlib-basemap mplot3d