簡體   English   中英

使用matplotlib用兩個y軸繪制線圖?

[英]Line plot with two y-axes using matplotlib?

我有一個(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文件中。

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

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM