python - 根据散点图中的另一列定义气泡大小和气泡颜色(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 文件 (PopX1000) 中的人口列正在定义气泡的大小,目前它也在定义它们的颜色。我希望气泡根据人口改变大小(就像现在一样),但颜色会根据国家所在的地区而改变。
我相信我不能简单地更改 c 属性,因为它需要一个浮点值。关于如何做到这一点的任何提示?
解决方案
您可以将 转换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)
推荐阅读
- sql-server - 使用偏移或超前或滞后返回特定行
- java - JAVA - TOMCAT 7 - 尝试将系统上传到 Tomcat 时出现以下错误:[严重] 无法处理 Jar 条目 xxxxx
- r - 比较循环
- java - 哪些请求/响应事件类与 Application Load Balancer 触发的 Lambda 一起使用
- c - 在基于 arm32 映像的容器中,readdir 在目录为空时返回 EOVERFLOW
- php - 警告:mysqli_stmt_init() 期望参数 1 为 mysqli,给定 null
- javascript - 如何添加一个在多选列表中上下滚动的按钮?
- python - 如何将字符串列表中的值转换为 Pandas DataFrame
- java - 在页面对象模型中,应将覆盖模式窗口视为单独的页面类还是在“父”页面类中?
- java - 如何使用 ByteBuddy 的 @Advice.AllArguments 替换输入参数?