如何使用 df.plot() 推断图例
How to infer legend using df.plot()
如何推断和显示图例?
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'
?
相同的方式推断它
df.plot(kind='scatter', x='sepal_length', y='sepal_width', c='c', cmap='viridis' , 图例 = 真)
添加 legend=True 有用吗?
您可以使用 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()
如何推断和显示图例?
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'
?
df.plot(kind='scatter', x='sepal_length', y='sepal_width', c='c', cmap='viridis' , 图例 = 真)
添加 legend=True 有用吗?
您可以使用 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()