目录
前言
气泡图的绘制
气泡图适用于什么数据?
图形效果
首先导入所需要的库
导入数据
查看数据是否有问题
提取出要进行对比的数据
绘制气泡图
气泡图是一种多变量图表,是散点图的变体,也可以认为是散点图和百分比区域图的组合。
气泡图与散点图相似,不同之处在于,气泡图允许在图表中额外加入一个表示大小的变量。实际上,这就像以二维方式绘制包含三个变量的图表一样。气泡由大小不同的标记(指示相对重要程度)表示。
气泡图通常用于比较和展示不同类别圆点(这里我们称为气泡)之间的关系,通过气泡的位置以及面积大小。从整体上看,气泡图可用于分析数据之间的相关性。
需要注意的是,气泡图的数据大小容量有限,气泡太多会使图表难以阅读。但是可以通过增加一些交互行为弥补:隐藏一些信息,当鼠标点击或者悬浮时显示,或者添加一个选项用于重组或者过滤分组类别。
import pandas as pd
import pyecharts.options as opts
from pyecharts.charts import Scatter
Pandas是python第三方库,提供高性能易用数据类型和分析工具。Pandas基于NumPy实现,常与NumPy和Matplotlib一同使用。
Scatter函数可以非常方便地绘制两个数值型变量的散点图。
data = pd.read_excel(r'航空公司数据-剔除空年龄.xlsx')
以航空公司数据为例,分析年龄,飞行次数,最大乘机时间间隔之间的关系
data_select = data.loc[:100,['年龄','飞行次数','最大乘机时间间隔']]
data_select.isnull().sum()
loc[]切片:使用.loc[ ]第一个参数是行索引,第二个参数是列索引
pandas库中有一个isnull()函数,它可以用来判断缺失值
*如果数据有异常值需要对数据进行处理
x = data_select['飞行次数'].tolist()
y = data_select['最大乘机时间间隔'].tolist()
z = data_select['年龄'].tolist()
.tolist()函数可以将数组或矩阵转换为列表,它的返回值以list的形式出现
color_range = ['#ffcc00','#ff7f00','#ff0000']
c = (
Scatter(init_opts=opts.InitOpts(width="800px", height="400px"))
.set_global_opts(
xaxis_opts=opts.AxisOpts(
type_="value",
splitline_opts=opts.SplitLineOpts(is_show=True),
name = '飞行次数', # 坐标轴名称
name_location = 'center',
name_gap = 30
),
yaxis_opts=opts.AxisOpts(
type_="value",
splitline_opts=opts.SplitLineOpts(is_show=True),
name = '最大乘机时间间隔',
name_location = 'center',
name_gap = 30
),
legend_opts = opts.LegendOpts(pos_top='5%'), # 图示位置
)
)
for i,j,q in zip(x,y,z):
c.add_xaxis(xaxis_data = [i])
c.add_yaxis(
series_name='气泡大小:年龄', # 巧用序列名称和图示来提示气泡大小的含义
y_axis = [j],
symbol_size = q//3, # 根据年龄数据定义合适的气泡大小
color = 'rgb(125,180,150)'
)
c.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
c.render_notebook()
上述应用了matplotlib模块中的scatter函数绘制了气泡图,气泡的大小代表了年龄
xAxis代表坐标系中的x轴 ,yAxis代表坐标系中的y轴
type:坐标轴类型,'value'—数据轴、'time'—时间轴、'log'—对数轴、'category'—类目轴
name:坐标轴名称
nameLocation:坐标轴名称的位置
for in zip():并行遍历,zip()函数可以将多个序列打包在一起,然后同时遍历它们
label_opts:标签配置项
color:配置颜色
is_show:是否显示标签(True 、Flase)