我有以下代码,其中只有ax3显示绘图区域和数据。子图ax1和ax2显示绘图区域但没有数据。最终,我想要三个图(3,1个配置),sharex = True。我使用的是Python 2.7.2和matplotlib 1.2.1
maxinbuf 4194304
答案 0 :(得分:0)
而不是使用
plt.barh(ind, q2, width, color=colors)
将其更改为
ax1 = ax1.barh(ind, q2, width, color=colors)
ax2 = ax2.barh(ind, q4, width, color=colors)
ax3 = ax3.barh(ind, q6, width, color=colors)
希望这能解决你的问题。
答案 1 :(得分:0)
你做了一件有点奇怪的事情。您可以使用ax1
命令在脚本顶部定义ax2
,ax3
和plt.subplots
,但之后不再使用它们。我已经重新编写了脚本,以确保所有命令都在正确axes
上运行。
您可以使用plt.barh()
而不是ax1.barh()
。然后,您可以使用ax1.set_yticks()
,ax1.set_ylim()
,ax1.set_xticks()
和ax1.set_xlim()
import numpy as np
import matplotlib.pyplot as plt
f, (ax1, ax2, ax3) = plt.subplots(3, 1, sharex=True, sharey=False)
f.subplots_adjust(wspace=0)
N = 4
ind = np.arange(N)
width = .4
group_names = ('A', 'B', 'C', 'D')
q2 = [84, 21, 10, 4]
q4 = [69, 34, 22, 0]
q6 = [66, 28, 17, 2]
colors = ['c', 'purple', 'g', 'red']
ax1.barh(ind, q2, width, color=colors)
ax1.set_yticks(ind+width/N, group_names)
ax1.set_ylim([min(ind)-0.25, max(ind)+0.65])
ax1.set_xticks(np.arange(0, 110, 10.))
ax1.set_xlim(0, 100)
ax2.barh(ind, q4, width, color=colors)
ax2.set_yticks(ind+width/N, group_names)
ax2.set_ylim([min(ind)-0.25, max(ind)+0.65])
ax2.set_xticks(np.arange(0, 110, 10.))
ax2.set_xlim(0, 100)
ax3.barh(ind, q6, width, color=colors)
ax3.set_yticks(ind+width/N, group_names)
ax3.set_ylim([min(ind)-0.25, max(ind)+0.65])
ax3.set_xticks(np.arange(0, 110, 10.))
ax3.set_xlim(0, 100)
plt.show()