利用pyecharts做数据可视化

pyecharts 是一个用于生成 Echarts 图表的类库,通过Python 实现与Echarts的对接。

  • 通用配置项
    • xyAxis:平面直角坐标系中的 x、y 轴。(Line、Bar、Scatter、EffectScatter、Kline)
    • dataZoom:dataZoom 组件 用于区域缩放,从而能自由关注细节的数据信息,或者概览数据整体,或者去除离群点的影响。(Line、Bar、Scatter、EffectScatter、Kline、Boxplot)
    • legend:图例组件。图例组件展现了不同系列的标记(symbol),颜色和名字。可以通过点击图例控制哪些系列不显示。
    • label:图形上的文本标签,可用于说明图形的一些数据信息,比如值,名称等。
    • lineStyle:带线图形的线的风格选项(Line、Polar、Radar、Graph、Parallel)
    • grid3D:3D笛卡尔坐标系组配置项,适用于 3D 图形。(Bar3D, Line3D, Scatter3D)
    • axis3D:3D 笛卡尔坐标系 X,Y,Z 轴配置项,适用于 3D 图形。(Bar3D, Line3D, Scatter3D)
    • visualMap:是视觉映射组件,用于进行『视觉编码』,也就是将数据映射到视觉元素(视觉通道)
    • markLine&markPoint:图形标记组件,用于标记指定的特殊数据,有标记线和标记点两种。(Bar、Line、Kline)
    • tooltip:提示框组件,用于移动或点击鼠标时弹出数据内容
    • toolbox:右侧实用工具箱
  • 图表详细
    • Bar(柱状图/条形图)
    • Bar3D(3D 柱状图)
    • Boxplot(箱形图)
    • EffectScatter(带有涟漪特效动画的散点图)
    • Funnel(漏斗图)
    • Gauge(仪表盘)
    • Geo(地理坐标系)
    • GeoLines(地理坐标系线图)
    • Graph(关系图)
    • HeatMap(热力图)
    • Kline/Candlestick(K线图)
    • Line(折线/面积图)
    • Line3D(3D 折线图)
    • Liquid(水球图)
    • Map(地图)
    • Parallel(平行坐标系)
    • Pie(饼图)
    • Polar(极坐标系)
    • Radar(雷达图)
    • Sankey(桑基图)
    • Scatter(散点图)
    • Scatter3D(3D 散点图)
    • ThemeRiver(主题河流图)
    • TreeMap(矩形树图)
    • WordCloud(词云图)
  • 用户自定义
    • Grid 类:并行显示多张图
    • Overlap 类:结合不同类型图表叠加画在同张图上
    • Page 类:同一网页按顺序展示多图
    • Timeline 类:提供时间线轮播多张图

下面操作几个例子



首先先导入包,导入Page是为了在一个页面上能展示多个图表

import random

from pyecharts import Bar, Page, Style
创建一个类
def create_charts():
    page = Page()


    attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
    v1 = [5, 20, 36, 10, 75, 90]
    v2 = [10, 25, 8, 60, 20, 80]
    chart = Bar("柱状图-数据堆叠", )
    chart.add("商家A", attr, v1, is_stack=True)
    chart.add("商家B", attr, v2, is_stack=True, is_more_utils=True)
    page.add(chart)

    chart = Bar("柱状图-数据标记", )
    chart.add("商家A", attr, v1, mark_point=["average"])
    chart.add("商家B", attr, v2, mark_line=["min", "max"], is_more_utils=True)
    page.add(chart)

    chart = Bar("柱状图-xy 轴互换", )
    chart.add("商家A", attr, v1)
    chart.add("商家B", attr, v2, is_convert=True)
    page.add(chart)

    chart = Bar("柱状图-直方图", )
    chart.add("", attr * 2, v1 + v2, bar_category_gap=0)
    page.add(chart)

    attr = ["{}".format(i) for i in range(20)]
    v1 = [random.randint(1, 20) for _ in range(20)]
    chart = Bar("柱状图-标签旋转", )
    chart.add("", attr, v1, xaxis_interval=0, xaxis_rotate=30,
              yaxis_rotate=30)
    page.add(chart)

    attr = ["{}".format(i) for i in range(1, 8)]
    v1 = [0, 100, 200, 300, 400, 220, 250]
    v2 = [1000, 800, 600, 500, 450, 400, 300]
    chart = Bar("柱状图-瀑布图", )
    chart.add("", attr, v1, label_color=['rgba(0,0,0,0)'], is_stack=True)
    chart.add("月份", attr, v2, is_label_show=True, is_stack=True,
              label_pos='inside')
    page.add(chart)

    attr = ["{}".format(i) for i in range(1, 13)]
    v1 = [2.0, 4.9, 7.0, 23.2, 25.6, 76.7,
          135.6, 162.2, 32.6, 20.0, 6.4, 3.3]
    v2 = [2.6, 5.9, 9.0, 26.4, 28.7, 70.7,
          175.6, 182.2, 48.7, 18.8, 6.0, 2.3]
    chart = Bar("柱状图-数据缩放(slider)", )
    chart.add("蒸发量", attr, v1, mark_line=["average"],
              mark_point=["max", "min"])
    chart.add("降水量", attr, v2, mark_line=["average"],
              mark_point=["max", "min"],
              is_datazoom_show=True, datazoom_range=[50, 80])
    page.add(chart)

    attr = ["{}".format(i) for i in range(30)]
    v1 = [random.randint(1, 30) for _ in range(30)]
    chart = Bar("柱状图-数据缩放(slider)", )
    chart.add("", attr, v1, is_label_show=True, is_datazoom_show=True)
    page.add(chart)

    attr = ["{}".format(i) for i in range(1, 13)]
    v1 = [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]
    v2 = [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]
    chart = Bar("柱状图-数据缩放(inside)", )
    chart.add("蒸发量", attr, v1, mark_line=["average"],
              mark_point=["max", "min"])
    chart.add("降水量", attr, v2, mark_line=["average"],
              mark_point=["max", "min"], is_datazoom_show=True,
              datazoom_range=[20, 60], datazoom_type='inside')
    page.add(chart)

    attr = ["{}".format(i) for i in range(30)]
    v1 = [random.randint(1, 30) for _ in range(30)]
    chart = Bar("柱状图-数据缩放(inside)", )
    chart.add("", attr, v1, is_datazoom_show=True, datazoom_type='inside',
              datazoom_range=[10, 60])
    page.add(chart)

    attr = ["{}".format(i) for i in range(30)]
    v1 = [random.randint(1, 30) for _ in range(30)]
    chart = Bar("柱状图-数据缩放(both)", )
    chart.add("", attr, v1, is_datazoom_show=True, datazoom_type='both',
              datazoom_range=[10, 60])
    page.add(chart)

    return page

create_charts().render()

猜你喜欢

转载自blog.csdn.net/GZ_Wiilian/article/details/81053643