使用python中的matplotlib在同一窗口中绘制2个图形

时间:2012-05-17 06:30:50

标签: python graph matplotlib

我正在matplotlib中绘制折线图和条形图,并且两个人都在使用我的脚本正常工作。
但是我遇到了一个问题:
1.如果我想在同一输出窗口中绘制两个图形 2.如果我想将显示窗口自定义为1024 * 700

在第一种情况下,我使用子图在同一窗口中绘制两个图,但我无法为两个图提供各自的x轴和y轴名称以及它们各自的标题。 我失败的代码是:

import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
xs,ys = np.loadtxt("c:/users/name/desktop/new folder/x/counter.cnt",delimiter = ',').T
fig = plt.figure()
lineGraph = fig.add_subplot(211)
barChart = fig.add_subplot(212)

plt.title('DISTRIBUTION of NUMBER')
lineGraph = lineGraph.plot(xs,ys,'-')  #generate line graph
barChart = barChart.bar(xs,ys,width=1.0,facecolor='g') #generate bar plot

plt.grid(True)
plt.axis([0,350,0,25])  #controlls axis for charts x first and then y axis.


plt.savefig('new.png',dpi=400)
plt.show()

但有了这个,我无法正确标记两个图表 并请关于如何将窗口大小调整为1024 * 700的网站。

2 个答案:

答案 0 :(得分:1)

当你说

  

我正在使用子图在同一个窗口中绘制两个图,但我无法为这两个图提供各自的x轴和y轴名称以及它们各自的标题。

你的意思是你想设置轴标签吗?如果是,请尝试使用lineGraph.set_xlabellineGraph.set_ylabel。或者,在创建绘图之后和创建任何其他绘图之前,请致电plt.xlabelplot.ylabel。例如

# Line graph subplot
lineGraph = lineGraph.plot(xs,ys,'-')
lineGraph.set_xlabel('x')
lineGraph.set_ylabel('y')

# Bar graph subplot
barChart = barChart.bar(xs,ys,width=1.0,facecolor='g')
barChart.set_xlabel('x')
barChart.set_ylabel('y')

同样适用于标题。致电plt.title会为当前有效的情节添加标题。这是您创建的最后一个图或使用plt.gca激活的最后一个图。如果您想要特定子图上的标题,请使用子图句柄:lineGraph.set_titlebarChart.set_title

答案 1 :(得分:0)

fig.add_subplot返回一个matplotlib Axes对象。该对象的方法包括set_xlabelset_ylabel,如Chris所述。您可以在http://matplotlib.sourceforge.net/api/axes_api.html上的Axes对象上看到完整的方法集。