簡體   English   中英

如何使用 matplotlib 中的 2 個列表在 plot 上繪制一條線和點?

[英]How to plot a line and dots on it using 2 lists in matplotlib?

我有 2 個列表:

losses = [12,13,15,10,9,8]
dots = [1,0,0,1,0,0]

我怎樣才能 plot losses列表中的主線,並且在dots列表中有1的地方在那條線上有一個點?

我目前有這樣的東西(請注意,它與上面的示例有 2 個不同的列表,因此值有點不同)

plt.plot(losses, c = 'b')
plt.plot(dots, c='r');

但我不確定如何在主線上只畫點

在此處輸入圖像描述

使用合適的標記怎么樣?

from matplotlib import pyplot as plt

losses = [12,13,15,10,9,8]
dots = [1,0,0,1,0,0]

# value from losses whenever corresponding dots value is 1:
d = [v if d else None for d, v in zip(dots, losses)]

plt.plot(losses, c='b')
plt.plot(d, c='b', marker='|', markersize=40)

在此處輸入圖像描述

您的圖表與您的描述不符,但這是您描述的操作方法。 您將這些點作為散點 plot。 您可以使用 numpy 的精美索引從 x 和 y 軸中選擇“dots”為 True 的點。 請注意,它必須是 True/False,所以我使用==1將您的數字轉換為布爾值。

import matplotlib.pyplot as plt
import numpy as np

losses = np.array([12,13,15,10,9,8])
dots = np.array([1,0,0,1,0,0])==1
x = np.arange(6)*50000

xscat = x[dots]
yscat = losses[dots]

plt.plot(x, losses, c = 'b')
plt.scatter(xscat, yscat, c='r');
plt.show()

在此處輸入圖像描述

暫無
暫無

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

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