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

2024-10-04 01:27:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在构建一个从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文件: enter image description here

xls文件(PopX1000)中的population列定义了气泡的大小,目前也定义了气泡的颜色。 我希望泡泡的大小根据人口的不同而改变(就像现在一样),但是颜色要根据州所处的区域而变化。在

我相信我不能简单地更改c属性,因为它需要一个浮点值。 有什么建议吗?在


Tags: 文件importdatamatplotlibascmpltxls
1条回答
网友
1楼 · 发布于 2024-10-04 01:27:51

您可以将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)

相关问题 更多 >