pyecharts自定义图表

Grid:并行显示多张图表

一共绘制了四张图,分别为折线图,条形图,散点图,条形图,具体的代码如下:

# -*- coding: utf-8 -*-
"""
Created on Mon Jan 28 18:02:34 2019

@author: Administrator
"""
from pyecharts import Bar, Line, Grid,Scatter
bar=Bar("各科成绩","张三",title_pos="65%")
bar.add("科目",["语文","数学","英语","理科综合","自选模块"],[110,130,130,250,50],legend_pos="80%")
#legend:图例



bar2=Bar("成绩比较",title_top="50%",title_pos="65%")
attr2=["语文","数学","英语","理科综合","自选模块"]
v1=[110,130,130,250,50]
v2=[90,140,120,280,60]
bar2.add("张三",attr2,v1,legend_top="50%",legend_pos="80%")
bar2.add("李四",attr2,v2,legend_top="50%",legend_pos="80%")      #is_convert=True 可以让xy轴反转




attr=["语文","数学","英语","理科综合","自选模块"]
v1=[110,130,130,250,50]
v2=[90,140,120,280,60]
line=Line("折线图")
line.add("张三",attr,v1,mark_point=["average"],legend_pos="20%")
line.add("李四",attr,v2,is_smooth=True,mark_line=["max","average"],legend_pos="20%")

v3 = [5, 20, 36, 10, 75, 90]
v4 = [10, 25, 8, 60, 20, 80]
scatter = Scatter("散点图示例", title_top="50%")
scatter.add("scatter", v3, v4, legend_top="50%", legend_pos="20%")


#配置Grid类
grid = Grid(height=720, width=1440) # 初始化,参数可传page_title,width,height
grid.add(bar, grid_bottom="60%", grid_left="60%")  # 添加要展示的图表,并设置显示位置
grid.add(line, grid_bottom="60%", grid_right="60%") # 添加要展示的图表,并设置显示位置
grid.add(bar2, grid_top="60%", grid_left="60%") # 添加要展示的图表,并设置显示位置
grid.add(scatter, grid_top="60%", grid_right="60%") # 添加要展示的图表,并设置显示位置

grid.render("./Grid_并行显示多张图表.html")

title_pos用来调整标题的水平位置,title_top用来调整标题的竖直方向上的位置

legend也是同理

而grid调整水平位置为grid_left以及grid_right,调整竖直方向上的位置为grid_top以及grid_bottom

输出页面如下:

Overlap:图表混合使用

attr = ["day{}".format(i) for i in range(1, 8)]
#x轴统一为周一到周日
v1 = [135.6, 162.2, 32.6, 20.0, 6.4, 3.3,6.9]
v2 = [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6]
v3 = [4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5]

bar = Bar()
bar.add("蒸发量", attr, v1)
bar.add("降水量", attr, v2, yaxis_formatter=" ml",
        yaxis_interval=40, yaxis_max=200)

line = Line()
line.add("平均气温", attr, v3, yaxis_formatter=" °C", yaxis_interval=5)

overlap = Overlap(width=1200, height=600) # 实例化
# 默认不新增 x 轴, y 轴,并且 x轴和 y 轴的索引都为 0
overlap.add(bar)
# 新增一个 y 轴,此时 y 轴的数量变为 2,第二个 y 轴的索引为 1,所以设置 yaxis_index = 1
# 由于使用的是同一个 x 轴,所以 x 轴部分不用做出改变
overlap.add(line, yaxis_index=1, is_add_yaxis=True)

overlap.render("./Overlap_图表混合.html")

输出页面如下:

 

Page:一个页面顺序渲染多个图表

from pyecharts import Page,Line,Kline,Radar,Pie

page = Page() # 实例化page类

# line
attr = ['一班', '二班', '三班', '四班', '五班', '六班']
line = Line("各班数学成绩")
line.add("数学最高分", attr, [140, 130, 150, 130, 128, 143],
         mark_point=["max", "min"], mark_line=["average"])
line.add("数学最低分", attr, [66, 78, 36, 58, 69, 77],
         mark_point=["max", "min"], mark_line=["average"])
page.add(line) # TODO 向page中添加图表


# pie
pie=Pie("高考成绩")
attr=["语文","数学","英语","理科综合","自选模块"]
v1=[110,130,130,250,50]
#v2=[90,140,120,280,60]
pie.add("",attr,v1,is_label_show=True)
page.add(pie) # TODO 向page中添加图表





#数据意义:开盘(open),收盘(close),最低(lowest),最高(highest)
# kline
v1 = [[2320.26, 2320.26, 2287.3, 2362.94],
      [2300, 2291.3, 2288.26, 2308.38],
      [2295.35, 2346.5, 2295.35, 2345.92],
      [2347.22, 2358.98, 2337.35, 2363.8],
      [2360.75, 2382.48, 2347.89, 2383.76],
      [2383.43, 2385.42, 2371.23, 2391.82],
      [2377.41, 2419.02, 2369.57, 2421.15],
      [2425.92, 2428.15, 2417.58, 2440.38],
      [2411, 2433.13, 2403.3, 2437.42],
      [2432.68, 2334.48, 2427.7, 2441.73],
      [2430.69, 2418.53, 2394.22, 2433.89],
      [2416.62, 2432.4, 2414.4, 2443.03],
      [2441.91, 2421.56, 2418.43, 2444.8],
      [2420.26, 2382.91, 2373.53, 2427.07],
      [2383.49, 2397.18, 2370.61, 2397.94],
      [2378.82, 2325.95, 2309.17, 2378.82],
      [2322.94, 2314.16, 2308.76, 2330.88],
      [2320.62, 2325.82, 2315.01, 2338.78],
      [2313.74, 2293.34, 2289.89, 2340.71],
      [2297.77, 2313.22, 2292.03, 2324.63],
      [2322.32, 2365.59, 2308.92, 2366.16],
      [2364.54, 2359.51, 2330.86, 2369.65],
      [2332.08, 2273.4, 2259.25, 2333.54],
      [2274.81, 2326.31, 2270.1, 2328.14],
      [2333.61, 2347.18, 2321.6, 2351.44],
      [2340.44, 2324.29, 2304.27, 2352.02],
      [2326.42, 2318.61, 2314.59, 2333.67],
      [2314.68, 2310.59, 2296.58, 2320.96],
      [2309.16, 2286.6, 2264.83, 2333.29],
      [2282.17, 2263.97, 2253.25, 2286.33],
      [2255.77, 2270.28, 2253.31, 2276.22]]
kline = Kline("股票K线图")
kline.add("日K", ["2019/1/{}".format(i + 1) for i in range(31)], v1)

page.add(kline) # TODO 向page中添加图表

# radar
schema = [
    ("数据分析", 100), ("数据挖掘", 100), ("大数据", 100),
    ("算法", 100), ("机器学习", 100), ("数据库", 100)
]
v1 = [[80, 70, 80, 80, 75, 90]]
v2 = [[100, 70, 60, 90, 80, 60]]

radar = Radar("个人技术评价")
radar.config(schema)
radar.add("张三", v1, is_splitline=True, is_axisline_show=True)
radar.add("李四", v2, is_splitline=True, is_axisline_show=True)



page.add(radar) # TODO 向page中添加图表

page.render("./Page_一个页面渲染多张图表.html")

输出页面如下:

Timeline:时间线轮播多图

from pyecharts import Bar, Line, Timeline, Overlap
from random import randint

attr = ["周{}".format(i) for i in range(1, 6)]
bar = Bar("周1数据")
bar.add("bar", attr, [randint(10, 50) for _ in range(5)])
line = Line()
line.add("line", attr, [randint(50, 80) for _ in range(5)])
overlap = Overlap()
overlap.add(bar)
overlap.add(line)

#每一张轮播的图都是使用了共用坐标轴,Overlap,图表混合使用

bar_1 = Bar("周2数据")
bar_1.add("bar", attr, [randint(10, 50) for _ in range(5)])
line_1 = Line()
line_1.add("line", attr, [randint(50, 80) for _ in range(5)])
overlap_1 = Overlap()
overlap_1.add(bar_1)
overlap_1.add(line_1)

bar_2 = Bar("周3数据")
bar_2.add("bar", attr, [randint(10, 50) for _ in range(5)])
line_2 = Line()
line_2.add("line", attr, [randint(50, 80) for _ in range(5)])
overlap_2 = Overlap()
overlap_2.add(bar_2)
overlap_2.add(line_2)

bar_3 = Bar("周4数据")
bar_3.add("bar", attr, [randint(10, 50) for _ in range(5)])
line_3 = Line()
line_3.add("line", attr, [randint(50, 80) for _ in range(5)])
overlap_3 = Overlap()
overlap_3.add(bar_3)
overlap_3.add(line_3)





timeline = Timeline(
                    page_title = "页标签名",
                    width=600,
                    height=600,         # 设置长宽
                    is_auto_play= True, # 是否自动播放,默认=False
                    is_loop_play= True, # 是否循环播放
                    is_rewind_play=False, # 反向播放
                    is_timeline_show=True, # 是否显示时间线,默认=true
                    timeline_play_interval=1000, # 播放间隔,ms
                    timeline_symbol= "arrow", # 时间点标记图形, 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow'
                    timeline_symbol_size= [15,8], # 图形大小,可以是数字和列表,列表表示宽高
                    timeline_left= "1% ", # 距离左边距离 , timeline_right
                    timeline_bottom=0, # timeline_top
            )
timeline.add(overlap, '一分厂')
timeline.add(overlap_1, '二分厂')
timeline.add(overlap_2, '三分厂')
timeline.add(overlap_3, '四分厂')


timeline.render("./Timeline_时间线轮播多张图表.html")

输出页面如下:

 

 

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值