Python 使用“绘制x-y图形”;“四”;斧头

Python 使用“绘制x-y图形”;“四”;斧头,python,matplotlib,Python,Matplotlib,一般来说,我试图了解matplotlib是否真的具有此功能 我有一个速度(在x轴上)与功率(在y轴上)的千瓦图,我需要添加一个旋转(在第二个y轴上,右侧)和另一个速度(在第二个x轴上,顶部)以公里/小时为单位 功率(kW)与速度(mph)相关,而旋转与功率相关,第二个速度(在第二个x轴上)只是第一个速度乘以转换系数 所以,我的问题是-如何在matplotlib中绘制具有两个x轴和两个y轴的x-y图?查找和 对不起,我误解了 import numpy as np import matplotlib

一般来说,我试图了解matplotlib是否真的具有此功能

我有一个速度(在x轴上)与功率(在y轴上)的千瓦图,我需要添加一个旋转(在第二个y轴上,右侧)和另一个速度(在第二个x轴上,顶部)以公里/小时为单位

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

所以,我的问题是-如何在matplotlib中绘制具有两个x轴和两个y轴的x-y图?查找和


对不起,我误解了

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()

@DNA-如果你愿意,你可以根据速度进行旋转,但通常不会这样做。旋转总是与功率相关。这是行业惯例,几十年来一直如此。所以它在技术上不是独立的,正如你所说的,但实际上,是的。如果我理解正确,你需要两个X轴,这样你可以用不同的单位显示速度-好的。你想要两个Y轴,这样你可以同时显示旋转和功率-但是你是否假设功率与旋转速度成线性比例?这在任何实际系统中都是不正确的。哦,我猜你指的是(某物的)输出功率。好吧,现在说得通了@DNA-作为一个一般情况,为了扩展-我可以在同一个图上绘制两个独立的(功率与速度)和(旋转与速度)图。不要介意“这没有意义”。。。我会担心这一部分。你也可以使用
fig,(ax1,ax2)=plt.子批(2)
而不是分别构造
fig
ax1
ax2
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()