使用matplotlib的两个y轴线图?

时间:2018-02-27 02:43:36

标签: python matplotlib plot

我有一个(x,y)值列表,如下所示。

  

k = [(3,6),(4,7),(5,8),(6,9),(7,10),(7,2),(8,3),(9) ,4),(10,5),(11,6)]

我想创建一个绘图,在相反的轴上绘制线条,如下所示,假设轴值在1-15范围内。

请在这里找到数字

我尝试使用twinx和twiny,但不确定如何实现这一目标。我认为使用Microsoft Excel可能更容易,但我在python npy文件中拥有所有值。

1 个答案:

答案 0 :(得分:1)

您可以使用LineCollection绘制线段的集合。 也可以使用plt.plot绘制每一行,但是 当有很多线段时,使用LineCollection更有效:

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.collections as mcoll

k = np.array([(3, 6), (4, 7), (5, 8), (6, 9), (7, 10), 
              (7, 2), (8, 3), (9, 4), (10, 5), (11, 6)])
x = np.array([0,1])

fig, ax = plt.subplots()
points = np.stack([np.tile(x, (len(k),1)), k], axis=2)
line_segments = mcoll.LineCollection(points, linestyles='solid', colors='black', 
                                     linewidth=2)
ax.add_collection(line_segments)
ax.set_xticks([0, 1])
# Manually adding artists doesn't rescale the plot, so we need to autoscale (https://stackoverflow.com/q/19877666/190597)
ax.autoscale()
plt.show()

enter image description here