如何推斷和顯示圖例?
import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_csv('iris.csv')
for i, s in enumerate(species := df['species'].drop_duplicates().values):
df.loc[df['species'] == s, 'c'] = i
df.plot(kind='scatter', x='sepal_length', y='sepal_width', c='c', cmap='viridis')
plt.show()
結果是:

我嘗試呼叫plt.legend(species)期望顯示 3 個物種名稱,但僅顯示 3 個中的 1 個,為什么?有沒有辦法以與 相同的方式推斷它c='c'?
uj5u.com熱心網友回復:
您可以使用 seaborn 庫,讓您的生活更輕松:
import seaborn as sns
sns.FacetGrid(iris, hue ="class",
height = 6).map(plt.scatter,
'sepallength',
'sepalwidth').add_legend()
但是如果你堅持按照自己的方式做,我認為最簡單的方法是在 for 回圈中將每個類別分開,如下所示:
iris_df=pd.read_csv('iris.csv')
for i in range(0, 3):
species_df = iris_df[iris_df['class'] == i]
plt.scatter(
species_df['sepal_length'],
species_df[''],
color=colours[i],
alpha=0.5,
label=species[i]
)
plt.xlabel('sepal length (cm)')
plt.ylabel('sepal width(cm)')
plt.title('Iris dataset: petal length vs sepal length')
plt.legend(loc='lower right')
plt.show()
uj5u.com熱心網友回復:
df.plot(kind='scatter', x='sepal_length', y='sepal_width', c='c', cmap='viridis', legend = True)
添加 legend=True 有效嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/461104.html
標籤:Python 熊猫 matplotlib
