数据可视化之离散化气泡图
先上效果图:
1.2,需求分析:
我们现在拿到一个xlsx表格
表格如下:(因为比赛未结束,已做防抄袭处理)
二,处理过程city,people,price 不X,1342370,8.75 x日,1252349,7.02 x可,122352,6.98
千里,11589,6.63 何處,11152,6.42 X得,2942,5.25 萬里,93404,5.04
明34月,943502,5.03 人間,803,4.47 悠悠,783453459,4.40 惆悵,78545,4.37
x見,734569,4.29 故人,734563,4.25 如s,75345,4.21 青山,728,4.06 s思,703457,3.94
2日,694,3.87 3人,683451,3.79 2逢,663450,3.68 天5地,643452,3.58
2.1,xlsx转csv+utf-8
xlsx转csv
2.2,py处理
2.2.1 引入模块
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
Matplotlib是一个Python 2D绘图库,它以多种硬拷贝格式和跨平台的交互式环境生成出版物质量的图形。
2.2.2,写入
气泡图:
if __name__=='__main__':
DrawBubble("mubiao.csv")#气泡图
写个主函数,把我处理过的csv文件引入。
传入上面的DrawBubble函数。
2.2.3,主体
如下,设置一下,把中文设置一下,不然只能显示英文,很是难受。
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
这个最好写在最前面,模块的下方。
上图,红线处,上到下,代码解释如下:
- 数据来源
- X轴数据
- Y轴数据
- 用来调整各个点的大小s
- X轴数据
注意s离散化的方法,因为需要通过点的大小来直观感受其所表示的数值大小
我所使用的是当前点的数值减去集合中的最小值后+0.1再*5000
参数是X轴数据、Y轴数据、各个点的大小、各个点的颜色
bubble = ax.scatter(r,x,s = (z - np.min(z) + 0.1) * 5000,cmap = cm, c = z, linewidth = 0.5, alpha = 0.5)
ax.grid()
fig.colorbar(bubble)
设置标题,以及x和y轴的标签!
ax.set_title("离散化分析唐诗词频前二十(气泡大小代表词频占总比)",fontsize = 15)
ax.set_xlabel('词',fontsize = 12)#X轴标签
ax.set_ylabel('词频',fontsize = 12)#Y轴标签
输出目标图像
plt.show()
三,后言
现在好像也快比赛截至时间了。贴几张,成果图浅看一下,抄袭图必举报。