懂点excel作图, 怎么让pyechart作的图更具“职场范“呢?丨pyechart工作作图模板

10年前, 偶然看到一本excel图表书籍《图表之道》,当时惊叹excel作图也能如此商务, 连续几天看完了全书, 自己对图表的喜爱也是从那时开始。

除了excel, 现在有更多的工具可以做出好看、交互性强的图表, 比如python中的pyechart, 如果不懂编程该如何作图呢?

本文将介绍十余种工作中图表制作方法, 提供完整代码, 大家可从模仿中入门python数据可视化!

每个图的侧重点:

  • 1 世界地图: 数据如何同图表中国家关联
  • 2 曲线图: 设置多条曲线, 曲线设置不同样式
  • 3 组合图: 设置图表间距
  • 4 帕累托图: 突出标记某个点
  • 5 曲线图: 次坐标变主坐标, x轴为日期数据
  • 6 中国地图: 数据如何同图表中省份关联
  • 7 中国地图: 设置移动轨迹
  • 8 世界地图: 图例,布局设置
  • 9 组合图: 双坐标轴
  • 10 中国地图: 添加多个城市数据, 用散点显示
  • 11 组合图: 图表简洁风格设置
  • 12 仪表盘: 8个图表生成一个仪表盘布局
  • 13 仪表盘: 自定义图表背景图

在这里插入图片描述

在这里插入图片描述
提前准备: 安装工具

  • 安装Anaconda软件
    下载地址: https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
    使用jupyter notebook 或者spyder
  • 安装pyechart工具包
    pyechart工具包有1.0版本和0.5版本, 请下载1.0以上版本
pip install pyecharts -U

作图中有很多地方涉及颜色参数调整, 强烈建议将以下网址收藏:

https://colorhunt.co/palettes/blue

可以挑选你喜欢的搭配

工具包及主要参数介绍

不同模块中用法可能不一样, 详细请参考官网: pyechart官网

  • options: pyechart中图表选项模块, 可设置图表各种参数, 在 pyecharts 中,一切皆 Options

  • pyecharts.charts: pyechart中作图模块. 如果在网上看到的代码是from pyecharts import Map, 说明使用的0.5版本的pyechart, 建议不用再看,两个版本不兼容

  • Map, Line, Bar,Pie: pyechart中具体的作图模块, 实例化例如:Map() , 可设置图表大小和主题风格

    • width : 图表宽度
    • height: 图表高度
    • theme: 图表风格: ‘chalk’,‘dark’, # 黑色背景适合地图 ‘essos’ ‘infographic’,‘light’,‘macarons’,‘purple-passion’, # 灰色背景适合地图 ‘roma’,‘romantic’, # 灰色背景 适合地图 ‘shine’,‘vintage’, #浅粉色 适合地图’walden’, ‘westeros’, # 蓝色’white’, # 黑红 ‘wonderland’
  • pd.read_excel() : 读取数据

  • add(): 添加数据 , 一般为series, 或列表列表或元组列表

  • add_xaxis: 添加x轴数据, 需要是列表

  • add_yaxis: 添加一个系列

  • set_series_opts: 图表系列设置. 数据标签label_opts

  • set_global_opts: 图表全局设置. 标题title_opts, 视觉映射visualmap_opts, 图例legend_opts, 提示框tooltip_opts, y轴yaxis_opts, x轴xaxis_opts

  • render() : 输出html文件

  • extend_axis: 添加次坐标轴

  • overlap() : 图表组合

  • add_schema(): 设置风格

  • reversal_axis(): 坐标轴旋转, 条形图

模板1:世界地图

作图数据与效果
代码:

# 导入工具包
import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import Map
# 作图数据
data = pd.read_excel('./data/GDPTOP20.xlsx',index_col=0)
data
# 作图
c = (
    Map(init_opts=opts.InitOpts(width="1400px",height='600px'))  # 图表大小
    # 添加数据系列名称, 数据(list格式), 地图名称, 不显示小红点
    .add("", [list(z) for z in zip(data['国家_re'], data['GDP(亿美元)'])], "world",is_map_symbol_show=False) 
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))  # 标签不显示(国家名称不显示)
    .set_global_opts(
        title_opts=opts.TitleOpts(title="2020年GDP前20国家",subtitle='单位: 亿美元'),   # 主标题与副标题名称
        visualmap_opts=opts.VisualMapOpts(max_=50000),               # 值映射最大值
    )   
)
c.render("2020年GDP前20国家.html")       # 生成html文件

模板2:曲线图丨实际与预测、实际与实际对比

数据及效果图

import pandas as pd
import numpy as np
import pyecharts.options as opts
from pyecharts.charts import Line
data = pd.read_excel('C:/Users/yyz/Desktop/pyechart数据可视化/data/曲线图.xlsx')
data
line = (
    Line(init_opts=opts.InitOpts(width="1400px", height="700px"))   # 设置图表大小
    .add_xaxis(data['月份'].tolist())  # 设置x轴, 需要加tolist
 
    .add_yaxis("2021年预测", 
                data['2021年预测'],
                is_connect_nones=True,# 缺失值的处理
                symbol_size=10, # 标识的大小
                is_smooth=True,# 线条样式  , 是否设置成圆滑曲线
                linestyle_opts=opts.LineStyleOpts(width=3,color ='#f6c065',type_="dashed"), # 线条颜色和宽度
                label_opts=opts.LabelOpts(is_show=True,position='top',color ='#f6c065'),# 文字标签的位置和颜色
                itemstyle_opts=opts.ItemStyleOpts(border_width=3, border_color="#f6c065", color="#f6c065"),# 标识的颜色和宽度
                )   

    .add_yaxis("2021年实际", 
               data['2021年实际'],
               is_connect_nones=True,
               #symbol="triangle" 标识的样式  三角形
               symbol_size=10, # 标识的大小
               is_smooth=True, # 线条样式  , 是否设置成圆滑曲线
               linestyle_opts=opts.LineStyleOpts(width=3,color ='#16c79a'),  # 线条颜色和宽度
               label_opts=opts.LabelOpts(is_show=True,position='top',color ='#16c79a'),# 文字标签的位置和颜色
               itemstyle_opts=opts.ItemStyleOpts(border_width=3, border_color='#16c79a', color='#16c79a'),  # 标识的颜色和宽度
               )    
    
    .add_yaxis("2020年实际", 
               data['2020年实际'],
               is_connect_nones=True,
               symbol_size=10, 
               is_smooth=True,
               linestyle_opts=opts.LineStyleOpts(width=3,color ='#28527a'),
               label_opts=opts.LabelOpts(is_show=True,position='bottom',color ='#28527a'),
               itemstyle_opts=opts.ItemStyleOpts(border_width=3, border_color="#28527a", color="#28527a"),
               )     
    
    .set_global_opts(title_opts=opts.TitleOpts(title="销售量趋势分析",subtitle="", # 主标题
                                               title_textstyle_opts=opts.TextStyleOpts(font_size=30), #主标题字体大小
                                               pos_left='6%'), # 主标题位置
                     legend_opts=opts.LegendOpts(is_show=True,# 是否显示图例
                                                 pos_top="3%",# 图例位置
                                                 item_width=15,# 宽度
                                                 item_height=15,#高度
                                                 item_gap=10,# 图例间隔
                                                 textstyle_opts=opts.TextStyleOpts(font_size=15)), # 图例文字大小
                     tooltip_opts=opts.TooltipOpts(trigger="axis"),# 提示框触发, 按坐标轴
                     yaxis_opts=opts.AxisOpts(type_="value",
                                              axistick_opts=opts.AxisTickOpts(is_show=False),   # 刻度线不显示
                                              axisline_opts=opts.AxisLineOpts(is_show=False),   # y轴线不显示
                                              splitline_opts=opts.SplitLineOpts(is_show=True),   # y轴网格线显示
                                              axislabel_opts=opts.LabelOpts(formatter="{value} 万件")),# y轴刻度文字
                     xaxis_opts=opts.AxisOpts(axistick_opts=opts.AxisTickOpts(is_align_with_label=True),
                                              is_scale=False,
                                              boundary_gap=False))
    )

line.render("C:/Users/yyz/Desktop/pyechart数据可视化/销售量趋势分析.html")

模板3:曲线图与柱形图组合图丨隐藏次坐标轴并显示同比

数据及效果

import pandas as pd
import numpy as np
import pyecharts.options as opts
from pyecharts.charts import Line,Bar,Grid
data = pd.read_excel('./data/添加次坐标轴.xlsx')
data
line = (
    Line(init_opts=opts.InitOpts(width="1400px", height="700px"))   # 图表大小
    .add_xaxis(data['月份'].tolist())   # x轴

    .add_yaxis("2019实际",  # 系列名称
               data['2019年实际'],  # 数据
               is_connect_nones=True, # 缺失值处理
               symbol_size=10, # 标识的大小
               is_smooth=True,  # 线的类型, 直线还是圆滑曲线
               linestyle_opts=opts.LineStyleOpts(width=3,color ='#28527a'),  # 线宽度
               label_opts=opts.LabelOpts(is_show=True,position='bottom',color ='#28527a'),# 文字标签的位置和颜色
               itemstyle_opts=opts.ItemStyleOpts(border_width=3, border_color='#28527a', color='#28527a'),  # 标识的颜色和宽度
               )     
    .add_yaxis("2020年实际", 
               data['2020年实际'], 
               symbol_size=10, # 标识的大小
               is_connect_nones=True, # 缺失值处理
               is_smooth=True, # 线的类型, 直线还是圆滑曲线
               linestyle_opts=opts.LineStyleOpts(width=3,color ='#f05454'), # 线宽 , 线的类型(虚线)
               label_opts=opts.LabelOpts(is_show=True,position='top',color ='#f05454'),# 文字标签的位置和颜色
               itemstyle_opts=opts.ItemStyleOpts(border_width=3, border_color='#f05454', color='#f05454'),  # 标识的颜色和宽度
               )   

    .extend_axis( # 设置次坐标轴
        yaxis=opts.AxisOpts(
            name="",
            type_="value",
            min_=-20,
            max_=80,
            is_show=False,
                            )
                )
    .set_global_opts(title_opts=opts.TitleOpts(title="销售趋势对比",
                                               title_textstyle_opts=opts.TextStyleOpts(font_size=30), #主标题字体大小
                                               subtitle="", # 次坐标轴
                                               pos_left='6%'),
                     legend_opts=opts.LegendOpts(is_show=True,pos_top="4%"),  # 图例
                     tooltip_opts=opts.TooltipOpts(trigger="axis"),
                     yaxis_opts=opts.AxisOpts(type_="value",
                                              axistick_opts=opts.AxisTickOpts(is_show=False),   # 刻度线
                                              axisline_opts=opts.AxisLineOpts(is_show=False),   # y轴线
                                              splitline_opts=opts.SplitLineOpts(is_show=True),   # y轴网格线
                                              axislabel_opts=opts.LabelOpts(formatter="{value} 万件")),
                      )
    )

bar = (
    Bar()
    .add_xaxis(xaxis_data=data['月份'].tolist())
    .add_yaxis(
        series_name="同比",
        yaxis_index=1,                                                                   # 次坐标
        y_axis=data['同比%'].tolist(),
        label_opts=opts.LabelOpts(is_show=True,position='top',formatter="{c} %"),
        itemstyle_opts=opts.ItemStyleOpts(color="#78c4d4",opacity=0.6),     # 柱形图颜色  
        )
    )

line.overlap(bar) # 图表组合
line.render("./销售趋势对比分析.html")

模板4:帕累托图、柱形图与曲线图组合

在这里插入图片描述

import pandas as pd
import numpy as np
from pyecharts import options as opts            
from pyecharts.charts import Bar,Line
data = pd.read_excel('./data/帕累托图.xlsx')
data
bar = (
    Bar(init_opts=opts.InitOpts(width="1200px", height="500px"))  # 设置图表大小
    .add_xaxis(data['公司'].tolist())   # 设置柱形图的x轴, 必须写.tolist()

    .add_yaxis(
        series_name="采购额",  # y轴系列名称
        y_axis=data['采购额'].tolist(),   # 系列书籍
        label_opts=opts.LabelOpts(is_show=True,position='top',formatter="{c}"),# 数字标签显示样式
        itemstyle_opts=opts.ItemStyleOpts(color="#78c4d4",opacity=0.5),     # 柱形图颜色  
        )
    .extend_axis( # 设置次坐标轴
        yaxis=opts.AxisOpts(
            name="",
            type_="value",
            min_=0,  # 最小值
            max_=1
pandas和pyecharts是两个常用的Python库,可以用于数据处理和数据可视化。下面是一个使用pandas和pyecharts进行作图的示例: 首先,我们需要导入所需的库: ```python import pandas as pd from pyecharts.charts import Sankey from pyecharts import options as opts ``` 然后,我们可以读取数据。假设我们有一个包含节点和边的数据集,可以使用pandas的`read_csv()`函数来读取CSV文件: ```python data = pd.read_csv('data.csv') ``` 接下来,我们可以使用pyecharts创建桑基。首先,我们需要创建一个Sankey对象,并设置表的标题和大小: ```python sankey = Sankey() sankey.set_global_opts(title_opts=opts.TitleOpts(title="Sankey Diagram"), # 设置表标题 ) ``` 然后,我们可以使用`add()`方法添加节点和边。假设我们的数据集包含了源节点、目标节点和边的权重,我们可以使用`add()`方法来添加这些信息: ```python sankey.add("", nodes=data['nodes'], # 添加节点 links=data['links'], # 添加边 linestyle_opt=opts.LineStyleOpts(opacity=0.2, curve=0.5, color="source"), # 设置边的样式 label_opts=opts.LabelOpts(position="right"), # 设置节点标签的位置 ) ``` 最后,我们可以使用`render()`方法将表保存为HTML文件或在Jupyter Notebook中显示: ```python sankey.render("sankey.html") # 保存为HTML文件 sankey.render_notebook() # 在Jupyter Notebook中显示 ``` 这样,我们就可以使用pandas和pyecharts创建一个桑基了。
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

python技巧(数据分析及可视化)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值