day13 pyecharts的使用
一、柱状图
from pyecharts.charts import Bar
from pyecharts import options
1.创建图表对象
bar = Bar()
2.添加数据
添加x轴数据
bar.add_xaxis(['1季度','2季度','3季度','4季度'])
添加y轴数据
bar.add_yaxis('销售额', [890, 1023, 509, 1500])
bar.add_yaxis('销量', [200, 300, 500, 400])
3.柱状图相关配置
1.全局配置
bar.set_global_opts(
# 设置标题
title_opts=options.TitleOpts(
title='全年xxx的销售信息',
title_link='https://www.baidu.com',
subtitle='销售额和销售信息',
pos_right=350,
# text_align='center'
),
# 设置图例
legend_opts=options.LegendOpts(
is_show=False, # 是否显示True/False
pos_right=0, # 到右边的距离
# item_width=20, # 图例的宽度
# item_height=10 # 到右边的宽度
),
# 设置工具箱
toolbox_opts=options.ToolboxOpts(
is_show=True
),
# 设置区域缩放
datazoom_opts=options.DataZoomOpts(
is_show=True # 是否显示True/False
),
# 设置x和y轴的名称
xaxis_opts=options.AxisOpts(
name='时间'
),
yaxis_opts=options.AxisOpts(
name='销售额(万元)/销量'
)
)
2.系列配置
bar.set_series_opts(
# 设置标签
label_opts=options.LabelOpts(
is_show=True, # 是否显示True/False
position='top' # 数据放置的位置 top/left/right
# rotate=45 # 设置旋转角度
),
# 设置标记点
markpoint_opts=options.MarkPointOpts(
data=[options.MarkPointItem(name='最大值', type_='max') ,options.MarkPointItem(name='最小值', type_='min')] # 标记最大值和最小值
)
)
3.渲染图表(制图)
bar.render('files/柱状图.html')
二、折线图
from pyecharts.charts import Line
from pyecharts import options
1.创建图表对象
line = Line()
2.添加数据
1.添加x轴数据
line.add_xaxis(['1季度', '2季度', '3季度', '4季度'])
2.添加y轴数据
line.add_yaxis('服装', [189, 340, 299, 412],is_smooth=True) # 数据是否平滑
line.add_yaxis('电子产品', [89, 109, 77, 56])
3.图标配置
line.set_global_opts(
title_opts=options.TitleOpts(
title='各大商品销售情况', # 设置图表名称
pos_right=350
),
legend_opts=options.LegendOpts(
pos_left=0
),
yaxis_opts=options.AxisOpts(
name='销售额(万元)' # y轴名称
),
xaxis_opts=options.AxisOpts(
name='时间' # x轴名称
)
)
line.set_series_opts(
markline_opts=options.MarkLineOpts(
data=[options.MarkPointItem(type_='average',name='平均销售额')] # 添加平均线
),
label_opts=options.LabelOpts(
is_show=False
)
)
4.渲染图表
line.render('files/折线图.html')
三、饼图
from pyecharts.charts import Pie
from pyecharts import options
1.创建饼图对象
pie = Pie()
2.添加数据
pie.add(
'手机销量',
[('Apple', 890), ('华为',1002),('小米', 409), ('oppo', 106), ('魅族', 98)],
# 分别设置内圆半径和外圆半径
radius=(40, 100), # 40代表的内半径,100代表的外半径;大小可以更改
rosetype='radius' # 让外圆环不规则
)
3.图标设置
pie.set_global_opts(
legend_opts=options.LegendOpts(
is_show=False # 标签是否显示
),
title_opts=options.TitleOpts(
title="XX商城手机销售情况", # 设置图表名称
pos_left='350'
)
)
pie.set_series_opts(
label_opts=options.LabelOpts(
# b代表名字,d代表占比
formatter='{b}({d}%)' # 控制百分比显示
)
)
4.渲染图表
pie.render('files/01饼图.html')
四、地图
from pyecharts.charts import Map
from pyecharts import options
(一)中国地图
1.创建地图对象
map1 = Map()
2.添加数据
map1.add(
'房价',
[('四川省', 8000), ('浙江省', 12000), ('重庆市', 9200),
('北京市', 53945), ('上海市', 46521), ('广东省', 6532)],
zoom=1.4, # 控制地图缩放
min_scale_limit=1,
max_scale_limit=3
)
3.添加配置
map1.set_global_opts(
# 设置地图颜色
visualmap_opts=options.VisualMapOpts(
is_show=False,
min_=3000,
max_=65000,
# 设置每一段的数值范围
is_piecewise=True, # 可以自动分段,也可以按照pieces自行分段
pieces=[
{'min': 3000, 'max': 4999},
{'min': 5000, 'max': 9999},
{'min': 10000, 'max': 29999},
{'min': 30000, 'max': 59999},
{'min': 60000, 'max': 65000},
]
),
legend_opts=options.LegendOpts(
is_show=False
),
title_opts=options.TitleOpts(
title='中国各省平均房价'
)
)
4.渲染图表
map1.render('files/中国房价图.html')
(二)、四川地图
map2 = Map() # 创建地图
map2.add('房价', [('成都市',12000),('乐山市',7000)],maptype='四川')
map2.render('files/05四川房价图.html') # 保存
(三)、成都地图
map3 = Map()
map3.add('房价',[('武侯区',18000)], maptype='成都')
map3.render('files/成都市地图.html')
(四)、世界地图
map4 = Map() # 创建地图
map4.add('房价',[('China',15000)],maptype='wold')
map4.set_series_opts(
label_opts=options.LabelOpts( # 世界地图国家名是否显示
is_show=False
)
)
map4.render('files/06世界地图.html') # 保存
五、词云图
from pyecharts.charts import WordCloud
from pyecharts import option
1.创建图表
wc = WordCloud()
2.添加数据
wc.add(
'',
[('王者荣耀', 82933), ('英雄联盟', 109283), ('阴阳师', 7289), ('原神', 1928), ('和平精英', 829),
('消消乐', 8192), ('羊了个羊', 909), ('飞机大战', 109), ('蛋仔派对', 647), ('猎梦者', 302),
('红警', 19), ('魔兽', 68922), ('刀塔', 3129), ('QQ农场', 87), ('植物大战僵尸', 891), ('地平线', 92),
('神庙逃亡', 10), ('节奏大师', 2033), ('找你妹', 9), ('大富翁', 340), ('保卫萝卜', 9012),('地铁酷跑',625)],
# cardioid(心脏线)、diamond(钻石)、triangle(三角形)、triangle-forward、pentagon(五边形)、star(星形)
shape='diamond', # 设置词云样式
)
3.渲染图表
wc.render('files/07词云图.html')