python - 如何将标签添加到特定位置并将值的总和作为绘图的大小
问题描述
pandas DataFrame 包含但不限于以下值:
x y z
Winter Night 2222
Spring Morning 3888
Summer Day 1111
Autumn Evening 2999
...
很抱歉,由于保密协议,我无法提供完整的数据集
该z
变量用于计算总和并将其作为图形上点的大小
def Scatter(x, y, z, colour_data=None):
f = plt.figure()
ax.scatter(x, y, s=z)
我想把它做成16个不同大小的点。基本上,我想计算两列的总和并做出适当的点大小。
解决方案
@Sheldore 提出了一个很好的观点,即您的示例中没有足够的代码可以使用,因此以下内容可能不是您正在寻找的内容。
我将季节和时间名称转换为整数,因为散点图无法绘制 x/y 轴的字符串。
import pandas as pd
df = pd.DataFrame(data={
'x': ['Winter','Spring','Summer','Autumn'],
'y': ['Night','Morning','Day','Evening'],
'z': [2222,3888,1111,2999],
})
# convert 'x' and 'y' strings to int to enable scatter plot
season_map = {
'Winter': 0,
'Spring': 1,
'Summer': 2,
'Autumn': 3,
}
time_map = {
'Night': 0,
'Morning': 1,
'Day': 2,
'Evening': 3,
}
df.loc[:,'x_int'] = df.x.map(season_map)
df.loc[:,'y_int'] = df.y.map(time_map)
ax = df.groupby(['x_int','y_int']).z.sum().reset_index()\
.plot.scatter(x='x_int', y='y_int', s=df['z'])
ax.set_xlabel('X')
ax.set_ylabel('Y')
推荐阅读
- dax - DAX ALLEXCEPT 忽略过滤器上下文?
- c++ - C++ 通用事件系统
- angular - 从辅助路由到根的 Angular 6 路由
- python - ValueError:无法分配对象用户必须是“用户”实例
- python - 使用 np.sum 在 python 中添加 Numpy 数组?
- wordpress - 有没有办法将多个块组合成一个块,以便可以将其保存为可重用?
- python - 如何制作一个首先嵌入用户输入中的动态浮点变量?
- python - 初学者 panda 根据代码更改行数据
- r - 如何通过矢量化重采样和重构n次?
- mysql - 无法从已部署的 Kubernetes NodeJS 应用程序连接到 Google MySQL