气泡图类似散点图,也是表示XY轴坐标之间的变化关系,也可以像彩色散点图给点上色。
区别在于可以通过图中散点的大小来直观感受其所表示的数值大小。
一、数据文件准备
1、PeopleNumber.csv
city,people,price
NJ ,823,3.19
XZ ,866,2.7
HA,487,2.51
YC,723,2.78
SQ,485,2.61
TZ,464,3.13
YZ,448,3.14
NT,730,2.69
LYG ,447,2.51
ZJ,318,3.15
WX,651,3.15
SZ,1061,3.15
CZ,470,3.15
气泡图X轴和Y轴分别描绘人口与价格的关系,用不同颜色标识不同城市。
第一列是城市(缩写)索引,第二列是人口数值,第三列是价格数值。
csv文件本质上就是以逗号(,)分隔开的txt文件,所以用excel打开形式为:
二、导入模块包
可参考Windows下安装Python、matplotlib包 及相关
https://blog.csdn.net/mikasa3/article/details/78942650
1、numpy
2、pandas
3、seaborn
4、matplotlib
三、完整代码
如下:
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
def DrawBubble(read_name):#气泡图
sns.set(style = "whitegrid")#设置样式
fp = pd.read_csv(read_name)#数据来源
x = fp.people#X轴数据
y = fp.price#Y轴数据
z = fp.price#用来调整各个点的大小s
cm = plt.cm.get_cmap('RdYlBu')
fig,ax = plt.subplots(figsize = (12,10))
#注意s离散化的方法,因为需要通过点的大小来直观感受其所表示的数值大小
#我所使用的是当前点的数值减去集合中的最小值后+0.1再*1000
#参数是X轴数据、Y轴数据、各个点的大小、各个点的颜色
bubble = ax.scatter(x, y , s = (z - np.min(z) + 0.1) * 1000, c = z, cmap = cm, linewidth = 0.5, alpha = 0.5)
ax.grid()
fig.colorbar(bubble)
ax.set_xlabel('people of cities', fontsize = 15)#X轴标签
ax.set_ylabel('price of something', fontsize = 15)#Y轴标签
plt.show()
if __name__=='__main__':
DrawBubble("PeopleNumber.csv")#气泡图
四、运行结果
1、气泡图