Matplotlib:将颜色图例添加到散点图

时间:2020-02-13 01:03:22

标签: python pandas matplotlib plot analytics

将表格设置为:

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

list_1=[['AU',152,474.0],
        ['CA',440,482.0],
       ['DE',250,564.0,],
       ['ES',707,549.0,],
       ['FR',1435,551.0,],
       ['GB',731,555.0,],
       ['IT',979,600.0,],
       ['NDF',45041,357.0,],
       ['NL',247,542.0,],
       ['PT',83,462.0,],
       ['US',20095,513.0,],
       ['other',3655,526.0,]]
labels=['country_destination','num_users','avg_hours_spend']
df=pd.DataFrame(list_1,columns=labels)
df=df.set_index('country_destination')
df

country_destination num_users   avg_hours_spend 
AU                     152        474.0
CA                     440        482.0
DE                     250        564.0
ES                     707        549.0
FR                     1435       551.0
GB                     731        555.0
IT                     979        600.0
NDF                    45041      357.0
NL                     247        542.0
PT                     83         462.0
US                     20095      513.0
other                  3655       526.0

我需要绘制散点图:

y = df['avg_hours_spend']
x = df['num_users']
N=12
colors = np.random.rand(N)
plt.scatter(x, y,c=colors)

plt.title('Web Sessions Data of Users')
plt.xlabel('No.Of.Users')
plt.ylabel('Mean Hours Users Spends on the Website')
plt.legend()
plt.show()

每种颜色在不同国家/地区的散点图

enter image description here

需要: 我想做一个大圆圈,并在右侧添加图例,以使每个国家/地区使用不同的颜色。 怎么样?

1 个答案:

答案 0 :(得分:2)

在matplotlib中,您可以为每个国家/地区(即数据框索引的每个级别)添加一个不同的散点,并将s参数设置为所需的任意值(因为您想要更大的点,因此我添加了{{ 1}}:

s=100

enter image description here

使用seaborn可以使用不同的语法获得相似的结果:

for i, row in df.iterrows():
    plt.scatter(x=row.num_users, y=row.avg_hours_spend, label=i, s=100)

plt.title("Web Sessions Data of Users")
plt.xlabel("No.Of.Users")
plt.ylabel("Mean Hours Users Spends on the Website")
plt.legend()
plt.show()

enter image description here