Python 3图子图仅显示一个图

时间:2015-09-30 20:35:21

标签: python matplotlib subplot

我有以下代码,其中只有ax3显示绘图区域和数据。子图ax1和ax2显示绘图区域但没有数据。最终,我想要三个图(3,1个配置),sharex = True。我使用的是Python 2.7.2和matplotlib 1.2.1

maxinbuf 4194304

2 个答案:

答案 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命令在脚本顶部定义ax2ax3plt.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()

enter image description here