前 言
Pyecharts是一个用于生成Echarts图表的类库,可以通过python import方法加载使用,没有安装的需要pip install pyecharts安装一下;Pyecharts的图表非常精美,功能较为强大,且对于有一定python基础来说很容易上手.
目 录
第一部分:效果图展示
1.1 最终效果图展示
1.2 本文效果图展示
第二部分:绘制精美图形
实 操
第一部分:效果图展示
1.1 最终效果图展示
本案例是基于pyecharts制作了一块常见的销售数据分析可视化大屏,大致的效果图如下(因数据来源的问题,最终效果会有一丝偏差,但是基本不影响):
1.2 本文效果图展示
由于图形有六个,故分成六篇文章来呈现。本文是第一篇,描绘的是中间第一张图表,最后的静态效果如下:
动态渲染效果也非常不错:
第二部分:绘图
接下来,开始我们的表演......
2.1 加载库
我们先把整个大屏需要的所有库都加载上:
from pyecharts.charts import Page,Bar,Line,Grid,Pieimport pyecharts.options as optsfrom pyecharts.globals import ThemeTypefrom pyecharts.faker import Fakerfrom pyecharts.commons.utils import JsCodeimport pandas as pdimport numpy as npimport randomfrom bs4 import BeautifulSoup
2.2 生成本文所需要的随机数据,都是list形式
year = list(range(2004,2021)) #年份random_data_1 = [random.randint(1000,10000) for _ in range(17) ] #生成17个随机整数random_data_2 = [random.randint(100,1000) for _ in range(17) ] #生成17个随机整数r1 = [round((random_data_1[i]-random_data_1[i-1])/random_data_1[i],2) for i in range(len(random_data_1))[1:]] #计算增长率,并取2位小数点r2 = [round((random_data_2[i]-random_data_2[i-1])/random_data_2[i],2) for i in range(len(random_data_2))[1:]] #计算增长率,并取2位小数点
2.3 不加任何参数绘制柱形图
因为销售额与订单量数值有差别,且共用一个y轴,所以会绘制的柱子高度相差较大。
bar = ( Bar() .add_xaxis(year) .add_yaxis('销售额',random_data_1) .add_yaxis('订单量',random_data_2)).render('my_first_pycharts.html')
2.4 将坐标轴右移,并设置Y轴刻度范围,此处是在全局变量下设置。
bar = ( Bar() .add_xaxis(year) .add_yaxis('销售额',random_data_1) .add_yaxis('订单量',random_data_2) .set_global_opts( yaxis_opts=opts.AxisOpts( position="right", #设置坐标轴在画布右侧 min_ = 0, #设置y刻度的最小值 max_ = 13000, #设置y刻度的最小值 ) )).render('my_first_pycharts.html')
2.5 添加一个描绘订单量的坐标轴
为了解决销售额与订单量共用一个坐标轴的问题,本文利用yaxis_index将其与销售额坐标轴分开来,再利用offset设置Y 轴相对于默认位置的偏移(一般在多Y轴上使用),并设置在右侧、刻度范围(注意代码添加的位置)
bar = ( Bar() .add_xaxis(year) .add_yaxis('销售额',random_data_1,yaxis_index=0,) .add_yaxis('订单量',random_data_2,yaxis_index=1,) .extend_axis( #添加一个描绘订单量的坐标轴 yaxis=opts.AxisOpts( position = 'right', #设置坐标轴在画布右侧 min_ = 0, #设置y刻度的最小值 max_ = 1300, #设置y刻度的最小值 offset = 60, #设置Y轴偏移 ) ) .set_global_opts( yaxis_opts=opts.AxisOpts( position="right", #设置描绘销售额的坐标轴在画布右侧 min_ = 0, #设置y刻度的最小值 max_ = 13000, #设置y刻度的最小值 ) )).render('my_first_pycharts.html')
2.6 引入描绘增长率的坐标轴,并设置在左侧、刻度范围
bar = ( Bar() .add_xaxis(year) .add_yaxis('销售额',random_data_1,yaxis_index=0,) .add_yaxis('订单量',random_data_2,yaxis_in