用“四”轴绘制x-y图

时间:2012-02-04 11:51:53

标签: python matplotlib

通常,我试图了解 matplotlib 是否具有此功能。

我的 速度 (在x轴上)以英里/小时与 电源 (在y轴上)在kW图表中,我需要添加 旋转 (在第二个y轴上,到右边)和另一个 速度 (在第二个x轴上,在顶部),以km / h为单位。

以kW为单位的功率与以mph为单位的速度相关,而旋转与Power相关,而第二速度(在第二x轴上)只是第一速度乘以转换系数。

所以,我的问题是 - 我怎样才能在matplotlib中用两个x轴和两个y轴绘制x-y图?

2 个答案:

答案 0 :(得分:7)

正在寻找twinxtwiny

import matplotlib.pyplot as plt
x = range(1,21)
plt.xlabel('1st X')
plt.ylabel('1st Y')
plt.plot(x,x,'r') # against 1st x, 1st y
plt.axis([0,50,0,25])
plt.twinx()
plt.ylabel('2nd Y')
plt.plot(x,x,'g') # against 1st x, 2nd y
plt.axis([0,50,0,20])
plt.twiny()
plt.xlabel('2nd X')
plt.plot(x,x,'b') # against 2nd x, 2nd y
plt.axis([0,10,0,20])
plt.show()

enter image description here

答案 1 :(得分:4)

道歉,我误解了。

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.axes import Axes

rect = 0.1, 0.1, 0.8, 0.8

fig = plt.figure()
ax1 = fig.add_axes(rect)

t = np.arange(0.01, 10.0, 0.01)

ax1.plot(t, np.exp(t), 'b-') # Put your speed/power plot here
ax1.set_xlabel('Speed (mph)', color='b')
ax1.set_ylabel('Power', color='b')

ax2 = fig.add_axes(rect, frameon=False)
ax2.yaxis.tick_right()
ax2.yaxis.set_label_position('right')
ax2.xaxis.tick_top()
ax2.xaxis.set_label_position('top')

ax2.plot(t, np.sin(2*np.pi*t), 'r-') # Put your speed/rotation plot here
ax2.set_xlabel('Speed (kmph)', color='r')
ax2.set_ylabel('Rotations', color='r')

plt.show()

enter image description here