簡體   English   中英

如何在 python 中使用 matplotlib 為圖中的每個散點獲取不同的標簽名稱?

[英]How to get distinct label name for each scatter points in graph using matplotlib in python?

我正在使用 for 循環為點提供標簽和顏色。 但是我沒有得到每個不同顏色符號的唯一標簽,相反,由於 500 行左右的大型 Excel 數據,我在圖表頂部排起了長隊。 這是我的代碼:

for val in ghi:
if val < 2:
    col.append('navy')
    lab.append(' <2 ')
elif (val >= 2) and (val < 4):
    col.append('lightblue')
    lab.append(' 2~4 ')
elif (val >= 4) and (val < 6):
    col.append('orange')
    lab.append(' 4~6 ')
else:
    col.append('brown')
    lab.append(' >6 ')
plt.scatter(x, y, marker = "D", s = 10, color = col, label = lab)
sns.lineplot(x, y, color ="red")
plt.legend()

您看到多個標簽的原因是label=lab 每行有一個條目。 因此,您將需要使用plt.legend()添加句柄和標簽,這樣您就可以像 if/else 語句中那樣只有四個條目。 此外,為確保顏色和標簽匹配,請按實驗室字段對數據進行排序。

由於沒有提供任何數據,前幾行包括隨機數據的創建。 請注意,我將數據放入數據框中並按ghi字段對其進行排序。 稍后,圖例具有您可以根據需要自定義的句柄和標簽。 希望這是您想要實現的目標。

否則,我已嘗試保持相同的名稱和盡可能多的代碼,以便您更容易解釋。

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from matplotlib.lines import Line2D 

ghi = np.random.randint(11, size=(20))
x = np.random.rand(20)
y = np.random.rand(20)
col = []
for val in ghi:
    if val < 2:
        col.append('navy')
    elif (val >= 2) and (val < 4):
        col.append('lightblue')
    elif (val >= 4) and (val < 6):
        col.append('orange')
    else:
        col.append('brown')

df = pd.DataFrame({'x':x, 'y':y, 'ghi':ghi, 'col':col})
df.sort_values(by=['ghi'], inplace = True)
plt.scatter(df.x, df.y, marker = "D", s = 50, color = df.col)#, label = np.unique(lab))
sns.lineplot(x, y, color ="red")
myHandles = [Line2D([], [], marker='D', color='navy', linestyle='None'),
          Line2D([], [], marker='D', color='lightblue', linestyle='None'),
          Line2D([], [], marker='D', color='orange', linestyle='None'),
          Line2D([], [], marker='D', color='brown', linestyle='None')]

plt.legend(handles=myHandles, labels = [' <2 ', ' 2~4 ', ' 4~6 ', ' >6 '])

輸出圖

在此處輸入圖像描述

暫無
暫無

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

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