我绘制了一个带有大量水平条的水平条形图。 有什么方法可以阻止y轴标题和条形图中的条形重叠。或者唯一的方法是增加图表的高度? 我尝试过使用: plt.figure(figsize =(13,14))但当我尝试用 plt替换 plt.show()时,它也不起作用。图(figsize =(13,14))。显示()
我收到错误: UserWarning:matplotlib目前正在使用非GUI后端,因此无法显示图 " matplotlib目前正在使用非GUI后端,"
import matplotlib.pyplot as plt
plt.rcdefaults()
import numpy as np
import matplotlib.pyplot as plt
length=[477, 531, 568, 651, 1599, 1605, 1635, 1960, 2009, 2446, 2668, 3308, 3433, 3889, 4180, 4529, 5388, 6378, 7588, 7671, 7679, 8505, 8763, 8863, 8910, 9028, 9030, 10124, 10722, 10894, 11103, 11388, 12167, 12464, 14217, 14367, 14472, 16501, 18765, 19407, 19627, 20795, 21727, 21912, 22620, 24871, 25045, 25625, 25867, 27512, 30380, 30424, 31264, 32070, 32277, 33879, 35749, 35932, 37406, 37414, 40040, 42070, 42516, 42804, 44381, 46314, 48216, 48349, 50547, 50796, 53759, 54716, 65888, 81106, 86280, 104522, 179133, 189921]
y_pos = np.arange(len(length))
error = np.random.rand(len(length))
plt.barh(y_pos, length, xerr=error*2, align='center', alpha=0.3)
plt.yticks(y_pos, length)
plt.xlabel('Lengths')
plt.title('Comparison of different cuts')
plt.show()
这是我所指的图表:
答案 0 :(得分:1)
您正在小空间内绘制大量条形图并标记每个刻度线。使这个清晰易读的最简单方法是增加绘图的长度。立即使用plt.figure(figsize=(10,20))
使我的情节清晰可见。
如果你想保持图形相同的大小,你可以调整一些其他的旋钮。首先,您可以使用height
参数控制每个水平条的高度。它默认为.8所以尝试使用较低的值。您还可以使用fontsize
参数控制yticks的大小。调整这些参数将为您提供不重叠的条形/刻度,但代价是分辨率。要在使用plt.savefig
保存图形时提高分辨率,请使用dpi
参数将其设置为高于默认值。
答案 1 :(得分:0)
y轴上的标签数量非常多,因此很难将它们全部放入绘图中。增加绘图的大小将有所帮助,另一件可能有帮助的事情是减少y-tick标签的字体大小,如下所示:
ax = plt.gca()
for tick in ax.yaxis.get_major_ticks():
tick.label.set_fontsize(6)
也许你也可以给出所有其他或第三个y-tick标签。