簡體   English   中英

Python/matplotlib:如何更改 plot 中每個第 n 個數據點的顏色和/或符號?

[英]Python/matplotlib: how do I change the color and/or symbol of every nth data point in a plot?

我對 Python 的體驗非常基礎。 我編寫了 Python 代碼來從外部文件導入數據並執行計算。 我的結果看起來像這樣(實際上要大得多)。

1   1       
1   1957    
1   0.15        
2   346 
2   0.90
2   100
3   1920
3   100
3   40

我要做的是 plot 這兩列作為一個系列,然后根據一定的模式區分每個數據點 我知道這聽起來不必要地復雜,但我需要做一些事情來幫助將使用我的代碼的人。 不幸的是,我的 Python 技能在這里失敗了。 進一步來說:

1.第一列有“1”、“2”或“3”。 所以首先我想讓所有的“1”數據點變成圓形(例如),所有的“2”數據點都是其他符號,同樣的“3”數據點也是如此。

2.接下來。 每個不同的數字有三行。 所以對於“1”,第二列的“0.15”是平均值,“1957”是最大值,“1”是最小值。 我想將與每個數字的平均值(每個數字的頂行)關聯的數據點設為綠色(例如)。 我希望最大值和最小值也有自己的 colors。

所以我最終會得到一個 plot 只顯示一個系列,但每個數據點看起來不同。 如果有人能指出我正確的方向,我將不勝感激。 如果我沒有說清楚,請告訴我,我會再試一次!

對於不同的標記 styles 您當前需要創建不同的 plot 實例(請參閱此 github 問題)。 使用不同的 colors 可以通過傳遞一個數組作為color參數來完成。 例如:

import matplotlib.pyplot as plt
import numpy as np

data = np.array([
    [1, 0.15],
    [1, 1957],
    [1, 1],
    [2, 346],
    [2, 0.90],
    [2, 100],
    [3, 1920],
    [3, 100],
    [3, 40],
])
x, y = np.transpose(data)

symbols = ['o', 's', 'D']
colors = ['blue', 'orange', 'green']

for value, marker in zip(np.unique(x), symbols):
    mask = (x == value)
    plt.scatter(x[mask], y[mask], marker=marker, color=colors)
plt.show()

我要做的是將數據分成三個不同的列,這樣你就有了幾個系列。 然后我會使用帶有不同標記的 plt.scatter 來獲得所需的效果。

圖片

代碼

import matplotlib.pyplot as plt
import numpy as np

# Fixing random state for reproducibility
np.random.seed(19680801)


N = 100
r0 = 0.6
x = 0.9 * np.random.rand(N)
y = 0.9 * np.random.rand(N)
area = (20 * np.random.rand(N))**2  # 0 to 10 point radii
c = np.sqrt(area)
r = np.sqrt(x ** 2 + y ** 2)
area1 = np.ma.masked_where(r < r0, area)
area2 = np.ma.masked_where(r >= r0, area)
plt.scatter(x, y, s=area1, marker='^', c=c)
plt.scatter(x, y, s=area2, marker='o', c=c)
# Show the boundary between the regions:
theta = np.arange(0, np.pi / 2, 0.01)
plt.plot(r0 * np.cos(theta), r0 * np.sin(theta))

plt.show()

來源: https://matplotlib.org/3.1.1/gallery/lines_bars_and_markers/scatter_masked.html#sphx-glr-gallery-lines-bars-and-markers-scatter-masked-py

暫無
暫無

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

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