用Python pyecharts v1.x 绘制图形(一):柱状图、柱状堆叠图、条形图、直方图、帕累托图、饼图、圆环图、玫瑰图
文章目录
- 关于pyecharts
- 柱状图
- 堆叠柱状图
- 条形图
- 直方图
- 帕累托图(复合图)
- 饼图
- 圆环图
- 玫瑰图
- 下一节
关于pyecharts
pyecharts是一个用于生成echart(百度开源的数据可视化javascript库)图表的类库。
pyecharts 分为 v0.5.x 和 v1.x 两个大版本,版本不兼容,本篇所有的案例基于v1.6.2。
C:\Users\XXX>pip show pyecharts
Name: pyecharts
Version: 1.6.2
Summary: Python options, make charting easier
Home-page: https://github.com/pyecharts/pyecharts
Author: chenjiandongx
Author-email: chenjiandongx@qq.com
License: MIT
Location: c:\users\xxx\appdata\local\programs\python\python38\lib\site-packages
Requires: simplejson, jinja2, prettytable
Required-by:
柱状图
# 柱状图
import random
import pyecharts.options as opts
from pyecharts.charts import Bar
x_vals = ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']bar = (Bar().add_xaxis(x_vals).add_yaxis('商家A', [random.randint(10, 100) for _ in range(6)]).add_yaxis('商家B', [random.randint(10, 100) for _ in range(6)]).add_yaxis('商家C', [random.randint(10, 100) for _ in range(6)]).add_yaxis('商家D', [random.randint(10, 100) for _ in range(6)]).set_series_opts(label_opts=opts.LabelOpts(is_show=True, font_size=14),markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(y=40, name="达标线=40")])).set_global_opts(title_opts=opts.TitleOpts(title='柱状图示例-销量', subtitle='四个商家'),xaxis_opts=opts.AxisOpts(name='商品'),yaxis_opts=opts.AxisOpts(name='单位:件'))
)
bar.render('柱状图.html')
堆叠柱状图
# 柱状堆叠图
import pyecharts.options as opts
from pyecharts.charts import Bargoods = ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
bar = (Bar().add_xaxis(goods).add_yaxis('商家A', [random.randint(10, 100) for _ in range(6)], stack='stack1').add_yaxis('商家B', [random.randint(10, 100) for _ in range(6)], stack='stack1').add_yaxis('商家C', [random.randint(10, 100) for _ in range(6)], stack='stack1').set_series_opts(label_opts=opts.LabelOpts(is_show=False)).set_global_opts(title_opts=opts.TitleOpts(title='柱状堆叠图示例-商品销量'),xaxis_opts=opts.AxisOpts(name='品类'), yaxis_opts=opts.AxisOpts(name='销量(单位:件)'))
)bar.render('柱状堆叠图.html')
条形图
# 条形图
x_vals1 = ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
x_vals2 = ['POLO', '篮球鞋', '羽绒服', '皮鞋', '领带', '睡衣']
x_vals3 = ['羽毛球服', '羽毛球鞋', '护腕', '护膝', '护踝', '毛巾']
y_vals = [random.randint(10, 100) for _ in range(18)]
bar = Bar().add_xaxis(x_vals1 + x_vals2 + x_vals3)
bar.add_yaxis('商家A', y_vals, markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_='average'),opts.MarkPointItem(type_='max'),opts.MarkPointItem(type_='min')], symbol_size=80))
bar.set_series_opts(label_opts=opts.LabelOpts(is_show=True, position='right'))
bar.set_global_opts(title_opts=opts.TitleOpts(title='条形图示例-商品销量', subtitle='条目较多条形图比较好看点'))
bar.reversal_axis() #翻转XY轴,将柱状图转换为条形图
bar.render('条形图.html')
直方图
# 直方图
# 直方图
import random
import pyecharts.options as opts
from pyecharts.charts import Bar
x_vals = ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
xlen = len(x_vals)# 设置成两种颜色
y_vals = []
for idx, item in enumerate(x_vals):if idx % 2 == 0:y_vals.append(opts.BarItem(name = item,value = random.randint(10, 100),itemstyle_opts = opts.ItemStyleOpts(color="#749f83"),))else:y_vals.append(opts.BarItem(name = item,value = random.randint(10, 100),itemstyle_opts = opts.ItemStyleOpts(color="#d48265"),))bar_histogram = (Bar().add_xaxis(x_vals).add_yaxis('商家A', y_vals, category_gap=0)# .add_yaxis('商家A', [random.randint(10, 100) for _ in range(6)], category_gap=0).set_series_opts(label_opts=opts.LabelOpts(is_show=True, font_size=14)).set_global_opts(title_opts=opts.TitleOpts(title='直方图示例-选择赠品', subtitle=''),xaxis_opts=opts.AxisOpts(name='赠品类型'),yaxis_opts=opts.AxisOpts(name='选择相应赠品的人数'))
)
bar_histogram.render('直方图.html')
帕累托图(复合图)
帕累托图用户分析定类数据,是排序的直方图
# 帕累托图--# 左边纵坐标表示频数,右边纵坐标表示频率.分析线表示累积频率
import random
from pyecharts import options as opts
from pyecharts.charts import Bar, Line
import pandas as pd# 随机颜色, from faker
def rand_color() -> str:return random.choice(["#c23531","#2f4554","#61a0a8","#d48265","#749f83","#ca8622","#bda29a","#6e7074","#546570","#c4ccd3","#f05b72","#444693","#726930","#b2d235","#6d8346","#ac6767","#1d953f","#6950a1",])df_origin = pd.DataFrame({'categories':['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子'],'sales': [random.randint(10, 100) for _ in range(6)]})
print(df_origin)
# 按销量降序排列
df_sorted = df_origin.sort_values(by='sales' , ascending=False)
print(df_sorted)# 折线图x轴
x_line_categories = [*range(7)]
# 折线图y轴--向下累积频率
cum_percent = df_sorted['sales'].cumsum() / df_sorted['sales'].sum() * 100
cum_percent = cum_percent.append(pd.Series([0])) # 添加起始频率0
cum_percent = cum_percent.sort_values(ascending=True)print(df_sorted.categories.values.tolist())
print(cum_percent.values.tolist())
def pareto_bar() -> Bar: line = (Line().add_xaxis(x_line_categories) .add_yaxis("累计百分比",cum_percent.values.tolist(), xaxis_index=1,yaxis_index=1, # 使用次y坐标轴,即bar中的extend_axislabel_opts=opts.LabelOpts(is_show=False),is_smooth=True,))bar = (Bar().add_xaxis(df_sorted.categories.values.tolist()).add_yaxis('销售额', df_sorted.sales.values.tolist(), category_gap=0)# .add_yaxis('总额百分比', cum_percent.values.tolist()) .extend_axis(xaxis=opts.AxisOpts(is_show=False, position='top')) .extend_axis(yaxis=opts.AxisOpts(axistick_opts=opts.AxisTickOpts(is_inside=True), # 刻度尺朝内axislabel_opts=opts.LabelOpts(formatter='{value}%'), position='right') ).set_series_opts(label_opts=opts.LabelOpts(is_show=True, font_size=14)).set_global_opts(title_opts=opts.TitleOpts(title='帕累托图示例-销售额', subtitle=''),xaxis_opts=opts.AxisOpts(name='商品类型', type_='category'),yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(formatter="{value} 件"))))bar.overlap(line)return barpareto_bar().render('帕累托图.html')
饼图
# 饼图
from pyecharts import options as opts
from pyecharts.charts import Page, Piepie = (Pie().add('鼠标选中分区后的tip',[list(z) for z in zip(['20{}年第{}季'.format(year,season) for year in [19, 20] # count 2 for season in range(1,5)] # count 2,[random.randint(2, 10) for _ in range(8)])]) # count 8.set_series_opts(label_opts=opts.LabelOpts(formatter='{b}: {c}万套')).set_global_opts(title_opts=opts.TitleOpts(title='饼图实例-近两年季度销售'),legend_opts=opts.LegendOpts(is_show=False))
)
pie.render('饼图.html')
圆环图
from pyecharts.charts import Pie
pie = (Pie().add('鼠标选中分区后的tip',[list(z) for z in zip(['20{}年第{}季'.format(year,season) for year in [19, 20] # count 2 for season in range(1,5)] # count 2,[random.randint(2, 10) for _ in range(8)])],radius=['50%', '75%'], #设置内径外径 label_opts=opts.LabelOpts(is_show=True) ).set_global_opts(title_opts=opts.TitleOpts(title='圆环图示例-近两年季度销售'),legend_opts=opts.LegendOpts(is_show=False))
)
pie.render('圆环图.html')
玫瑰图
# 玫瑰图
from pyecharts.charts import Pie
pie = (Pie().add('鼠标选中分区后的tip',[list(z) for z in zip(['20{}年第{}季'.format(year,season) for year in [19, 20] # count 2 for season in range(1,5)] # count 2,[random.randint(0, 10) for _ in range(8)])],radius=['10%', '75%'], #设置内径外径# rosetype='radius' 圆心角展现数据百分比,半径展现数据大小# rosetype='area' 圆心角相同,为通过半径展现数据大小rosetype='radius', label_opts=opts.LabelOpts(is_show=True) ).set_global_opts(title_opts=opts.TitleOpts(title='玫瑰图示例-近两年季度销售'),legend_opts=opts.LegendOpts(is_show=False))
)
pie.render('玫瑰图.html')
下一节
以OJ分析为例,编写折线图、散点图、箱线图、雷达图、词云图
注:建议有空的话可以去学习官方的demo :https://github.com/pyecharts/pyecharts/tree/master/example
用Python pyecharts v1.x 绘制图形(一):柱状图、柱状堆叠图、条形图、直方图、帕累托图、饼图、圆环图、玫瑰图相关推荐
- python动态横道图_用Python pyecharts v1.x 绘制图形【转】
关于pyecharts pyecharts是一个用于生成echart(百度开源的数据可视化javascript库)图表的类库.pyecharts 分为 v0.5.x 和 v1.x 两个大版本,版本不兼 ...
- 用Python pyecharts v1.x 绘制图形(二):折线图、折线面积图、散点图、雷达图、箱线图、词云图
文章目录 关于pyecharts 折线图 折线面积图 散点图 雷达图 箱线图 词云图 其他 关于pyecharts pyecharts是一个用于生成echart(百度开源的数据可视化javascrip ...
- 直方图 帕累托图_工具讲解 | 用Excel绘制帕累托图
帕累托图又叫排列图.主次图,是按照发生频率大小顺序绘制的直方图,表示有多少结果是由已确认类型或范畴的原因所造成.它是将出现的质量问题和质量改进项目按照重要程度依次排列而采用的一种图表.可以用来分析质量 ...
- 用Python爬取新型冠状病毒肺炎实时数据,pyecharts v1.x绘制省市区疫情地图
说明: 本文是Python可视化技术结合时下热点进行进行开发.讲解的案例,也课程思政的一个形式.文章遵守CSDN平台规定和国家法规(非新闻资质的网站不允许发布疫情数据),对运行结果(2020年2月8日 ...
- python matplotlib绘制柏拉图pareto_强大的帕累托分布——其可视化实现方法
1.帕累托分布 帕累托分布是一种幂律概率分布,以意大利土木工程师.经济学家和社会学家维尔弗雷多·帕累托的名字命名,用来描述社会.科学.地球物理.精算和其他各种可观察到的现象.帕累托分配有时也被称为帕累 ...
- python绘制帕累托图
python绘制帕累托图代码 1 import pandas as pd 2 import matplotlib.pyplot as plt 3 plt.rcParams['font.sans-ser ...
- python pyecharts Bar柱状堆叠图
柱状堆叠图,适合两个商家直接比较 attr=["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋" ...
- 【Python】用Python实现帕累托图
作为一名多次创业者和项目管理培训师, 今天田辛老师要做一件跨界的事情. 一方面, 田老师整理了项目管理中的重要质量管理工具 "帕累托图", 另一方面,田老师给到了帕累托图的Pyth ...
- R语言数据可视化 | 绘制帕累托图
本文依旧是以R语言自带的数据集Titanic中的Class绘制帕累托图 首先我们先把数据集Titanic中的Class数据提取出来,则就用到了R语言中的margin.table()函数.代码如下: t ...
最新文章
- requests抓取以及Xpath解析
- Ubuntu Server 更改hostname
- [MATLAB学习笔记]view相机视角
- MongoDB系列(一):简介及安装
- vs2008生成自定义dll,VS2008发布、生成网站时设置固定的dll文件名
- Taro+react开发(93):判断是否是H5端
- asp 下拉框二级联动
- Cesium场景导出为图片
- wps怎么统一修改标点符号_毕业论文的参考文献怎么加入??脚注如何降重?
- IOS图像拉伸解决方案
- [转]非模态对话框的特点与使用
- mysql创建gbk库_MYSQL创建utf-8和GBK格式数据库_MySQL
- python数据分析的概念_Python数据分析入门篇
- CAN总线的特点及J1939协议通信原理、内容和应用
- 商务与经济统计++原书第12版+[(美)安德森著][机械工业出版社][2015.07][515页][13854037]第一章读书笔记
- Android 系统网络框架
- Collaborative Evolutionary Reinforcement Learning
- 鹿晗关晓彤公布恋情微博服务器崩了,程序员结婚当天加班
- 批量修改bilibili下载视频的文件名
- 小米手机任意版本MIUI安装Google Play服务
热门文章
- 字典中setdefault()函数用法
- python中setdefault_python练习之setdefault用法详解
- vim插件vundle实战
- Android 解决GPS室内定位问题(location为null)
- Opencv_10 图像的透视变换
- Portrait Matting
- 《A Late Fusion CNN for Digital Matting》论文笔记
- matlab中概率函数,Matlab概率函数大全
- 关于婚姻你不能不知的事
- C#连接Access数据库,Update更新数据时出现“不能打开数据库,应用程序可能无法识别该数据库。。。”错误