最全最详细最新版的pyecharts数据可视化

1 pyecharts介绍
1.1 pyecharts是什么?
pyecharts 是一个用于生成 Echarts 图表的类库。Echarts 是百度开源的一个数据可视化 JS 库,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可,用 Echarts 生成的图可视化效果非常好。pyecharts 与 Python 进行对接,在 Python 中直接使用数据生成echarts图表,流程略微复杂但功能强大,图形为交互式,适合项目开发和商业分析报告(国人开发);但是这个库的问题也在于是一个非常新的库,开发很不稳定。
1.2 pyecharts 安装
pip 安装 pip install pyecharts
请注意:pyecharts V0.5版本和V1以上版本不兼容,网上搜到的示例代码大多是0.5版本的pyecharts,代码基本都无法运行。 当前课件版本是pyecharts1,6,2 ,也是目前最新的版本,大家确保版本一直后再进行开发。
2 pyecharts的图形修饰逻辑与图形示例
图形修饰逻辑
add()
主要方法,用于添加图表的数据和设置各种配置项
render()
默认将会在根目录下生成一个 render.html 的文件,支持 path 参数,设置文件保存位置,如 render(r"e:\my_first_chart.html"),文件用浏览器打开。
set_series_opts()
系列配置,用来控制图表中的文本,线样式,标记等,
set_global_opts()非常重要的修饰函数,负责图形大部分整体的修饰。
第一层次:主标题文本 class TitleOpts()
第二层次:坐标相关的设置 class AxisOpts()
坐标轴刻度最大值。
可以设置成特殊值 ‘dataMax’,此时取数据在该轴上的最大值作为最大刻度。
不设置时会自动计算最大值保证坐标轴刻度的均匀分布。
在类目轴中,也可以设置为类目的序数(如类目轴 data: [‘类A’, ‘类B’, ‘类C’] 中,序数 2 表示 ‘类C’。

#导入库
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import *

2.1柱状图

def bar_markpoint_type() -> Bar:
    c = (
        Bar()
        .add_xaxis(Faker.choose())
        .add_yaxis("商家A", Faker.values())
        .add_yaxis("商家B", Faker.values())
        .set_global_opts(title_opts=opts.TitleOpts(title="Bar-MarkPoint(图标题)")
                         ,yaxis_opts=opts.AxisOpts(name="我是 Y 轴")
                         ,xaxis_opts=opts.AxisOpts(name="我是 X 轴"),)
        .set_series_opts(
            label_opts=opts.LabelOpts(is_show=False), # 是否显示标签
            markpoint_opts=opts.MarkPointOpts(
                data=[
                    opts.MarkPointItem(type_="max", name="最大值"),
                    opts.MarkPointItem(type_="min", name="最小值"),
                    opts.MarkPointItem(type_="average", name="平均值"),
                ]
            ),
        )
    )
    return c
bar_markpoint_type().render_notebook()

运行结果:
在这里插入图片描述
2.2折线图

def line_markline() -> Line:
    c = (
        Line()
        .add_xaxis(Faker.choose())
        .add_yaxis(
            "商家A",
            Faker.values(),
            markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),
        )
        .add_yaxis(
            "商家B",
            Faker.values(),
            markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),
        )
        .set_global_opts(title_opts=opts.TitleOpts(title="Line-MarkLine"))
    )
    return c
line_markline().render_notebook()

运行结果:
在这里插入图片描述
2.3 饼图

# add()
# center为调整饼图圆心坐标
# is_random为是否随即排列颜色列表(bool)
# radius为半径,第一个为内半径,第二个是外半径
# rosetype为是否展示成南丁格尔图:'radius' 圆心角展现数据半分比,半径展现数据大小;'area'圆心角相同,为通过半径展现数据大小(默认)
# label_text_size为调整标签字体大小
def pie_radius() -> Pie:
    c = (
        Pie()
        .add(
            "",
            [list(z) for z in zip(Faker.choose(), Faker.values())],
            radius=["40%", "75%"], # 饼图的半径,数组的第一项是内半径,第二项是外半径 # 默认设置成百分比,相对于容器高宽中较小的一项的一半
        )
       # .set_colors(["blue", "green", "yellow", "red", "pink", "orange", "purple"])
        .set_global_opts(
            title_opts=opts.TitleOpts(title="Pie-Radius"),
            legend_opts=opts.LegendOpts(
                orient="vertical", pos_top="15%", pos_left="2%"  #orient 图例列表的布局朝向。可选:'horizontal', 'vertical'
            ),# pos_left 图例组件离容器左侧的距离。left 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比,
            # 也可以是 'left', 'center', 'right'。# 如果 left 的值为'left', 'center', 'right',组件会根据相应的位置自动对齐。
        )
        .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
    )
    return c
pie_radius().render_notebook()

运行结果:
在这里插入图片描述
2.4 层叠多图

def overlap_line_scatter() -> Bar:
    x = Faker.choose()
    bar = (
        Bar()
        .add_xaxis(x)
        .add_yaxis("商家A", Faker.values())
        .add_yaxis("商家B", Faker.values())
        .set_global_opts(title_opts=opts.TitleOpts(title="Overlap-line+scatter"))
    )
    line = (
        Line()
        .add_xaxis(x)
        .add_yaxis("商家A", Faker.values())
        .add_yaxis("商家B", Faker.values())
    )
    bar.overlap(line)
    return bar

overlap_line_scatter().render_notebook()

运行结果:
在这里插入图片描述
2.5词云图

from pyecharts import options as opts
from pyecharts.charts import Page, WordCloud
from pyecharts.globals import SymbolType
words = [
    ("Sam S Club", 10000),
    ("Macys", 6181),
    ("Amy Schumer", 4386),
    ("Jurassic World", 4055),
    ("Charter Communications", 2467),
    ("Chick Fil A", 2244),
    ("Planet Fitness", 1868),
    ("Pitch Perfect", 1484),
    ("Express", 1112),
    ("Home", 865),
    ("Johnny Depp", 847),
    ("Lena Dunham", 582),
    ("Lewis Hamilton", 555),
    ("KXAN", 550),
    ("Mary Ellen Mark", 462),
    ("Farrah Abraham", 366),
    ("Rita Ora", 360),
    ("Serena Williams", 282),
    ("NCAA baseball tournament", 273),
    ("Point Break", 265),
]


def wordcloud_base() -> WordCloud:
    c = (
        WordCloud()
        .add("", words, word_size_range=[20, 100], shape='circle')  # shape 词云图轮廓,有 'circle', 'cardioid', 'diamond', 'triangle-forward', 'triangle', 'pentagon', 'star' 可选
        .set_global_opts(title_opts=opts.TitleOpts(title="WordCloud-基本示例"))
    )
    return c
wordcloud_base().render_notebook()

运行结果:
在这里插入图片描述
2.6 地图

import datetime
def render_map_chart():
    A=['武汉市', '孝感市', '黄冈市', '荆州市','鄂州市', '随州市', '襄阳市', '黄石市', '宜昌市', '荆门市', '咸宁市', '十堰市', '仙桃市','天门市',
    '恩施土家族苗族自治州', '潜江市','神农架林区']
    B=[47071,3482,2904,1576,1385,1305,1175,1008, 926, 920, 836,671,575,495,251,195,11]
    map_chart = Map()
    map_chart.add(
        "湖北",  # map name
        [list(z) for z in zip(A,B)],
        "湖北",
        is_map_symbol_show=False
    )

    map_chart.set_global_opts(
        title_opts=opts.TitleOpts(
            title="湖北确诊人数分布(" + str(datetime.date.today()) + ")"
        ),
        visualmap_opts=opts.VisualMapOpts(
            max_=10000,
            is_piecewise=True,
            pieces=[
                {"min": 1, "max": 99, "label": "100人以下", "color": "#FFE6BE"},
                {"min": 100, "max": 499, "label": "100-499人", "color": "#FFB769"},
                {"min": 500, "max": 1000, "label": "500-1000人", "color": "#FF8F66"},
                {"min": 1000, "max": 3000, "label": "1000-3000人", "color": "#ED514E"},
                {"min": 3000, "max": 100000, "label": "2000人以上", "color": "#CA0D11"}
            ]))
    return map_chart.render_notebook()
render_map_chart()

在这里插入图片描述
2.7 Geo:地理坐标系

from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.globals import ChartType, SymbolType
def geo_lines_background() -> Geo:
    c = (
        Geo()
        .add_schema(
            maptype="china",
            itemstyle_opts=opts.ItemStyleOpts(color="#A5CC82", border_color="#111"),
        )
        .add(
            "",
            [("广州", 55), ("北京", 66), ("杭州", 77), ("重庆", 88)],
            type_=ChartType.EFFECT_SCATTER,
            color="white",
        )
        .add(
            "geo",
            [("广州", "上海"), ("广州", "北京"), ("广州", "杭州"), ("广州", "重庆")],
            type_=ChartType.LINES,
            effect_opts=opts.EffectOpts(
                symbol=SymbolType.ARROW, symbol_size=6, color="blue"
            ),
            linestyle_opts=opts.LineStyleOpts(curve=0.2),
        )
        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
        .set_global_opts(title_opts=opts.TitleOpts(title="Geo-Lines-background"))
    )
    return c
geo_lines_background().render_notebook()

在这里插入图片描述
2.8 漏斗图

from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Funnel, Page


def funnel_base() -> Funnel:
    c = (
        Funnel()
        .add("商品", [list(z) for z in zip(Faker.choose(), Faker.values())])
        .set_global_opts(title_opts=opts.TitleOpts(title="Funnel-基本示例"))
    )
    return c
funnel_base().render_notebook()

在这里插入图片描述
2.9 仪表盘

def gauge_splitnum_label() -> Gauge:
    c = (
        Gauge()
        .add(
            "业务指标",
            [("完成率", 55.5)],
            title_label_opts=opts.LabelOpts(
                font_size=40, color="blue", font_family="Microsoft YaHei"),
            split_number=5,
            axisline_opts=opts.AxisLineOpts(
                linestyle_opts=opts.LineStyleOpts(
                    color=[(0.3, "#67e0e3"), (0.7, "#37a2da"), (1, "#fd666d")], width=30
                )
            ),
           
        )
        .set_global_opts(
            title_opts=opts.TitleOpts(title="Gauge-分割段数-Label"),
            legend_opts=opts.LegendOpts(is_show=False),
        )
    )
    return c
gauge_splitnum_label().render_notebook() 

在这里插入图片描述
2.10 雷达图

from pyecharts import options as opts
from pyecharts.charts import Radar

v1 = [[4300, 10000, 28000, 35000, 50000, 19000]]
v2 = [[5000, 14000, 28000, 31000, 42000, 21000]]

def radar_base() -> Radar:
    c = (
        Radar()
        .add_schema(
            schema=[
                opts.RadarIndicatorItem(name="销售", max_=6500),
                opts.RadarIndicatorItem(name="管理", max_=16000),
                opts.RadarIndicatorItem(name="信息技术", max_=30000),
                opts.RadarIndicatorItem(name="客服", max_=38000),
                opts.RadarIndicatorItem(name="研发", max_=52000),
                opts.RadarIndicatorItem(name="市场", max_=25000),
            ]
        )
        .add("预算分配", v1)
        .add("实际开销", v2)
        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
        .set_global_opts(title_opts=opts.TitleOpts(title="Radar-基本示例"))
    )
    return c
radar_base().render_notebook() 

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值