我有一些数据想直接绘制在一个图上。一组的y范围不同。看来我可以使用plt
绘制两个具有相同y范围的集合,或者使用ax2 = ax1.twinx()
绘制两个具有不同范围的集合,但不能绘制全部三个。有偷偷摸摸的方法吗?
编辑:
显然,这不像答案那样简单!
def plot_data2(a = 0 , b = 0, c = 0 ):
fig, ax1 = plt.subplots(figsize = (18,8))
ax2 = ax1.twinx()
ax1.plot(a, 'b')
ax1.plot(b, 'g')
ax2.plot(c, 'r')
fig.tight_layout()
plt.show()
plot_data(a=data1, b=data2)
因此,尽管我现在可以一起打印三个图形。我还希望能够选择仅打印任意两个。
我要问为什么轴没有缩放,但是现在当我键入它时,我意识到这是因为我将默认值指定为0,所以它可以拉伸图形。有什么方法可以只打印两个图形并缩放它们以适合它们?以及相应地更新轴标签。我想我可以在函数内部编写几个if
,但我希望有一种更优雅的方法。
哦,还有一件事! x和y的范围如何不同?
答案 0 :(得分:0)
以下代码:
import matplotlib.pyplot as plt
X = [1,2,3,4,5]
data = [
[(6-x) for x in X], # Decreasing
[3 for x in X], # Horizontal
[(10*x) for x in X] # Increasing
]
print(data)
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax1.plot(X, data[0])
ax1.plot(X, data[1])
ax2.plot(X, data[2], 'r') # This is the dataset with a different y range
# Specify a color otherwise you'll get duplicated colors
plt.show()
产生:
蓝色= data[0]
,橙色= data[1]
,红色= data[2]
(在另一个y轴上)。