[英]How to create scatter plot with 3 columns
我有一個 df 看起來:
df_results = pd.DataFrame(data={})
df_results['names'] = ['James', 'Lucas', 'Henry', 'James', 'Lucas', 'Henry']
df_results['try_name'] = ["try_1", "try_1", "try_1", "try_2", "try_2", "try_2"]
df_results['score'] = [0.7, 0.9, 0.3, 0.91, 0.1, 0.2]
names try_name score
0 James try_1 0.70
1 Lucas try_1 0.90
2 Henry try_1 0.30
3 James try_2 0.91
4 Lucas try_2 0.10
我想創建一個 plot (分散),其中:
try_name
score
names
(3 種不同顏色)如何創建這個 plot?
純matplotlib解決方案:
fig = plt.figure(figsize=(7,4))
ax = fig.add_subplot(111)
for name in df_results.names.unique():
ax.scatter(df_results[df_results.names == name].try_name,
df_results[df_results.names == name].score, label=name)
ax.legend()
使用 pandas plot:
fig = plt.figure(figsize=(7,4))
ax = fig.add_subplot(111)
for i,name in enumerate(df_results.names.unique()):
df_results[df_results.names == name].plot.scatter('try_name', 'score',
ax=ax, color='C{}'.format(i),
label=name)
ax.legend()
您可以使用 seaborn 的swarmplot()
、 stripplot()
或 scatterplot( scatterplot()
。
例如swarmplot()
:
import seaborn as sns
sns.swarmplot(data=df_results, x='try_name', y='score', hue='names')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.