数据可视化(二)--使用Pyechart生成可动态交互的图表

前面一张文章介绍了使用Python自带的matplotlib生成的图表,当数据图例标签太多而产生重叠,非常影响美观。
如何解决图例标签堆叠在一起呢?解决办法:使用pyecharts模块

pyecharts介绍

pyecharts来自于echarts,echarts是百度的JavaScript可视化化开源库,集成了包括饼图、柱状图、地理位置图、热力图等多种图表格式。使用起来非常方便。官网地址如下
echarts–https://echarts.apache.org/zh/index.html
Pyecharts–http://pyecharts.herokuapp.com/

以下教程数据格式:pandas里面的dataframe,使用pyecharts画出漂亮的各种图表。

饼图Pie

from pyecharts import *
def DrawPicture(title,x,y,fig_path):
    pie = Pie(title, title_pos='center')
    pie.add(
        "",
        x,
        y,
        radius=[40, 75],
        is_label_show=True,
        is_more_utils=True,
        legend_orient="vertical",
        legend_pos="left",
    )
    pie.render(path=fig_path)
    return

直方图Hist

from  pyecharts import Bar
"""x代表横坐标图,输入一个横坐标列表,y1,y2代表两类的值"""
def DrawHist(name,x,y1,y2,file_path):
    bar = Bar(name, "直方图",title_pos='center')
    bar.add('类别1',x,y1,is_stack=True)
    bar.add('类别2',x,y2,is_stack=True)
    bar.render(file_path)
    return

堆叠图Bar

堆叠图的显示方法,bar.add方法设置参数is_stack=True,在将每行的堆叠图使用bar.add传入。代码如下所示

"""Bar:画柱状推叠图"""
# 堆叠柱状图
x_attr = ["1月", "2月", "3月"]
data1 = [69, 3, 0.53]
data2 = [10, 38, 0.28]
data3 = [1,48, 69.3]
data4 = [20,11,31]
bar1 = Bar('堆叠图')
bar1.add('类别1', x_attr, data1, is_stack=True)   # is_stack=True 表示堆叠在一起
bar1.add('类别2', x_attr, data2, is_stack=True)
bar1.add('类别3', x_attr, data3, is_stack=True)
bar1.add('类别4', x_attr, data4, is_stack=True)
bar1.render('bar1_demo.png')

地理图表Geo

热力图 Heat

#传入的data是list

import datetime
from pyecharts import HeatMap
 """热力图统计,df是一个带有时间信息的dataframe,根据时间信息进行聚合,再画热力图 """
datehit = df.groupby("pt_day").id.count()
data_hit_df = pd.DataFrame(data=datehit)
data_hit_df["pt_day"]=data_hit_df.index
data_hit_df1=data_hit_df[["pt_day","id"]]
min_time = data_hit_df1["id"].min()
max_time = data_hit_df1["id"].max()
data_list=data_hit_df1.values.tolist() #pyecharts接受list参数,转化为List 
def DrawCalHeat(data,min_time,max_time,fig_path):
    begin = datetime.date(2019,07,01)#设置开始时间
    end = datetime.date(2019,9,30)#设置结束时间
    hm = HeatMap("热力图", width=1000,title_pos="center")
    hm.add("",data,
           is_calendar_heatmap=True, #启用日历热力图
           is_visualmap=True, #多彩
           calendar_date_range=[begin, end], #设置日历时间段
           visual_range=[min_time, max_time],visual_range_text=["次数低","次数高"], #设置视觉组件条范围跟文字叙述
           visual_orient="horizontal", #设置组件条横竖,默认竖
           # 过度颜色,Thistle,LightPink、Violet
           visual_text_color="#000",   # 组件两端文本颜色
           visual_pos="center",visual_top='75%', #设置组件条位置
           calendar_cell_size=["auto", 30], #单元格大小
           tooltip_formatter="{c}", # str类型,{a}=系列名称add第一个参数,{b}=对应的x轴值,{c}=x,y坐标
           )
    hm.render(path=fig_path)
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值