滑动条形图/柱状图的实现

之前有写画过柱状图,遇到了一个问题,数据过多,x轴很密的问题。这点当时用的matplotlib做的,解决方法就是去掉部分点,隔一段显示一个,参见matplotlib画图时候x轴的标签过于密集的解决方法。后来我发现echarts, 它里面有滑动柱状图/折线图,完美的解决了这个问题。我看到还是有很多人遇到这方面的问题。刚好昨天针对我们自己的走势图做一个pv,uv的数据统计。我就用了pyecharts解决了这个问题。
我大概分了这么几步:

第一步:一个sh脚本完成对数据的统计,统计之后,记录当天的时间,pv, uv. 写入一个txt文本。
第二步:写一个python脚本,读取txt文本中的数据。然后生成原始数据。
第三步:生成走势图的html并配置nginx.

第一步就是shell脚本了,这里我就略过了。主要是第三步:

    *安装pyecharts                           pip install pyecharts==0.5.11
    pyecharts_snapshot 提供图片导出功能       pip install pyecharts_snapshot
    参考:https://pyecharts.org/#/zh-cn/global_options
         https://zhuanlan.zhihu.com/p/63236019
from pyecharts import Bar, Line
x = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋"]
y1 = [5, 20, 36, 10, 75]
y2 = [10, 25, 8, 60, 20]

bar = Bar(title = "产品月销量",width = 600,height = 420)
bar.add(name = "商家A", x_axis = x, y_axis = y1)
bar.add(name = "商家B", x_axis = x, y_axis = y2,is_xaxis_boundarygap =True)

# 导出绘图html文件,可直接用浏览器打开
bar.render('柱形图示范.html')


折线图
x = ['2018-{:0>2d}'.format(s) for s in range(1,13)]
y1 = [5,10,26,30,35,30,20,26,40,46,40,50]
y2 = [8,20,24,36,40,36,40,45,50,53,48,58]

line = Line(title = "月销售总额",width = 600,height = 420)

line.add(name = "商家A", x_axis = x, y_axis = y1,
         line_width = 3,line_color = 'red')
line.add(name = "商家B", x_axis = x, y_axis = y2,
         yaxis_min = 0,yaxis_max = 100,is_xaxis_boundarygap = True,
         is_datazoom_show =True,line_width = 2,line_color = 'cyan')
# 这里面折线图可以左右拉伸完全取决于is_datazoom_show这个参数。同时datazoom_range=[81,100]是设置滚动条默认显示的长度。
# is_xaxis_boundarygap 是点居于x轴的中心。
line.render('折线图示范.html')

这里会生成一个折线图示范.html的文件,配置一下nginx就可以供外部访问了。
与业务相关的代码就不贴了,参考上面代码即可完成滑动条形图或者折线图的配置。

你可能感兴趣的:(可视化)