我在散點圖中顯示圖例時遇到問題。向您展示我的問題的一個簡單示例是:從 1 到 10 的每個整數都有顏色。我想要一個顯示十個數字及其顏色的標簽(基本上:顏色及其對應的數字)
我有一個資料幀中的所有值(我向您展示的資料幀只是一個例子,真實的例子由數百行組成)
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
x = np.array([1,2,3,4,5,6,7,8,9,10])
y = 2*x
df = pd.DataFrame()
palette = {1: "blue", 2:"orange", 3:"green", 4:"red", 5:"purple", 6:"brown", 7:"pink", 8:"gray", 9:"olive", 10:"cyan"}
df["first"] = x
df["second"] = y
df["third"] = df["first"].apply(lambda x: palette[x])
plt.scatter(df["first"], df["second"], c=df["third"])
plt.legend()
plt.show()
將引數添加到散點線無濟于事(legend = c=df2["third"])
我找不到解決方案。
如有指點,謝謝
uj5u.com熱心網友回復:
標準圖例中的每條線對應一個帶有標簽的圖。您可以一次繪制一種顏色的散點圖,并分配相應的標簽。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
y = 2 * x
df = pd.DataFrame()
palette = {1: "blue", 2: "orange", 3: "green", 4: "red", 5: "purple", 6: "brown", 7: "pink", 8: "gray", 9: "olive", 10: "cyan"}
df["first"] = x
df["second"] = y
df["third"] = df["first"].apply(lambda x: palette[x])
for number, color in palette.items():
plt.scatter(x="first", y="second", c=color, data=df[df["first"] == number], label=number)
plt.legend()
plt.show()

這個程序可以簡化很多,在 Seaborn 中使用色調:
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
y = 2 * x
df = pd.DataFrame()
palette = {1: "blue", 2: "orange", 3: "green", 4: "red", 5: "purple", 6: "brown", 7: "pink", 8: "gray", 9: "olive", 10: "cyan"}
df["first"] = x
df["second"] = y
df["third"] = df["first"].apply(lambda x: palette[x])
sns.set()
sns.scatterplot(data=df, x="first", y="second", hue="first", palette=palette)
plt.show()

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/325045.html
標籤:Python matplotlib 传奇 分散
上一篇:將雪花表拉入資料框
