Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Matplotlib:将颜色图例添加到散点图_Python_Pandas_Matplotlib_Plot_Analytics - Fatal编程技术网

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

Python Matplotlib:将颜色图例添加到散点图,python,pandas,matplotlib,plot,analytics,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',97

表格如下:

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
我需要做散点图:

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()
每种颜色在不同国家的散点图

需要: 我想做一个大圆圈,并在右边添加图例,因为每个国家的颜色都不一样。
如何?

在matplotlib中,您可以为每个国家/地区(即数据帧索引的每个级别)添加不同的分散点,并将
s
参数设置为您想要的任何值(因为您想要更大的点,我添加了
s=100

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()

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

import seaborn as sns

ax = sns.scatterplot(
    x="num_users",
    y="avg_hours_spend",
    hue="country_destination",
    s=100,
    data=df.reset_index(),
)

ax.set_title("Web Sessions Data of Users")
ax.set_xlabel("No.Of.Users")
ax.set_ylabel("Mean Hours Users Spends on the Website")

在matplotlib中,您可以为每个国家/地区(即数据帧索引的每个级别)添加不同的分散点,并将
s
参数设置为您想要的任何值(因为您想要更大的点,我添加了
s=100

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()

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

import seaborn as sns

ax = sns.scatterplot(
    x="num_users",
    y="avg_hours_spend",
    hue="country_destination",
    s=100,
    data=df.reset_index(),
)

ax.set_title("Web Sessions Data of Users")
ax.set_xlabel("No.Of.Users")
ax.set_ylabel("Mean Hours Users Spends on the Website")