【问题标题】:Define bubble sizes according to a column and bubble colors according to another column in scatter plot (matplotlib)根据散点图中的另一列定义气泡大小和气泡颜色(matplotlib)
【发布时间】:2018-10-24 09:03:16
【问题描述】:

我正在构建一个从 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 属性,因为它需要一个浮点值。 有关如何执行此操作的任何提示?

【问题讨论】:

    标签: python python-3.x matplotlib


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2011-12-23
      • 2021-11-26
      • 1970-01-01
      • 2015-08-23
      • 1970-01-01
      • 2018-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多