Python 使用matplotlib绘制具有两个y轴的直线图?

Python 使用matplotlib绘制具有两个y轴的直线图?,python,matplotlib,plot,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,但不确定如何实现这一点。我认为使用MicrosoftExcel可能更容易,但我的所有值都在python npy文件中 可以使用LineCollection绘制线段集合。 也可以使用plt.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,但不确定如何实现这一点。我认为使用MicrosoftExcel可能更容易,但我的所有值都在python npy文件中

可以使用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()

可以使用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()
这可能很简单:

import matplotlib.pyplot as plt
[plt.plot(d) for d in k]
plt.ylabel('some numbers')
plt.show()
给我:

以及标签:

import matplotlib.pyplot as plt
[plt.plot(d) for d in k]
plt.ylabel('some numbers')
ax = plt.gca()
ax.xaxis.set_ticks([0,1])
ax.xaxis.set_ticklabels(["BaseLine", "FollowUp"])
plt.show()
这可能很简单:

import matplotlib.pyplot as plt
[plt.plot(d) for d in k]
plt.ylabel('some numbers')
plt.show()
给我:

以及标签:

import matplotlib.pyplot as plt
[plt.plot(d) for d in k]
plt.ylabel('some numbers')
ax = plt.gca()
ax.xaxis.set_ticks([0,1])
ax.xaxis.set_ticklabels(["BaseLine", "FollowUp"])
plt.show()

发布您当前的代码作为基础怎么样?在您给定的示例(k)上会有5行?我没有当前的代码。我试着在我的Python终端上做了一些事情,但没有得到任何有用的结果。我们应该如何知道线条坐标?[(3,6),(4,7),(5,8),(6,9),(7,10),(7,2),(8,3),(9,4),(10,5),(11,6)]给出了5条线条?(3,6),(4,7)+(5,8),(6,9)+(7,10),(7,2)+(8,3),(9,4)+(10,5),(11,6)?发布您当前的代码作为基础怎么样?在给定的示例(k)上会有5行?我没有当前的代码。我试着在我的Python终端上做了一些事情,但没有得到任何有用的结果。我们应该如何知道线条坐标?[(3,6),(4,7),(5,8),(6,9),(7,10),(7,2),(8,3),(9,4),(10,5),(11,6)]给出了5条线条?(3,6),(4,7)+(5,8),(6,9)+(7,10),(7,2)+(8,3),(9,4)+(10,5),(11,6)?这是一个非常简单的解决方案。非常感谢。这是一个超级简单的解决方案。非常感谢。