繁体   English   中英

根据一列定义气泡大小,并根据散点图中的另一列定义气泡颜色(matplotlib)

[英]Define bubble sizes according to a column and bubble colors according to another column in scatter plot (matplotlib)

我正在构建一个简单的散点图,该散点图从xls文件读取数据。 这是经典的预期寿命x人均GDP散点图。 这是代码:

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.cm as cm

#ler a terceira sheet da planilha
data = pd.read_excel('sample.xls', sheet_name=0)
data.head()

plt.scatter(x = data['LifeExpec'],
        y = data['GDPperCapita'],
        s = data['PopX1000'],
        c = data['PopX1000'],
        cmap=cm.viridis,
        edgecolors = 'none',
        alpha = 0.7)

for estado in range(len(data['UF'])):
    plt.text(x = data['LifeExpec'][estado],
         y = data['GDPperCapita'][estado],
         s = data['UF'][estado],
         fontsize = 14)

plt.colorbar()
plt.show()

.xls文件: 在此处输入图片说明

xls文件(PopX1000)中的填充列定义了气泡的大小,目前还定义了气泡的颜色。 我希望气泡可以根据人口来改变大小(就像现在一样),但是颜色可以根据州所在的地区来改变。

我相信我不能简单地更改c属性,因为它期望一个float值。 有关如何执行此操作的任何提示?

您可以将Region转换为数字表示形式,并将其用作颜色表的“键”。 以下是执行此操作的两种方法(一种方法已被注释掉,选择任何一种,结果都应该相同):

plt.scatter(x = data['LifeExpec'],
        y = data['GDPperCapita'],
        s = data['PopX1000'],
        c = pd.factorize(data['Region'])[0],
        # Alternatively:
        # c = data['Region'].astype('category').cat.codes
        cmap=cm.viridis,
        edgecolors = 'none',
        alpha = 0.7)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM