• 第八章用matplotlib、seaborn、pyecharts绘制散点图



    本文可以学习到以下内容:

    1. matplotlib 中文乱码解决办法
    2. seaborn 中文乱码解决办法
    3. seaborn 库csv数据下载地址
    4. 用matplotlib、seaborn、pyecharts绘制散点图

    散点图

    小凡在做数据分析的时候,经常需要对数据进行可视化操作,这样可以更加直观的了解数据,从而更好的分析数据。python常用来做数据可视化的第三方库有:matplotlib、seaborn、pyecharts。这几个第三方库都有各自的适用场景。

    小凡在学习python的时候,最先接触的是matplotlib,工作中又接触到了pyecharts、seaborn。本篇以散点图为例,重点在于如何方便的使用这些库。

    matplotlib绘制散点图

    matplotlib是python数据可视化最著名的绘图库,他可以很轻松的绘制出各种各样的图表。

    导入seaborn、pandas、numpy、matplotlib等库

    import seaborn as sns
    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    from pylab import mpl 
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在绘制图表的时候 matplotlib 对中文会显示成方框,可以用下面办法解决:

    # 黑体
    plt.rcParams["font.family"] = "SimHei"
    # plt.rcParams['font.sans-serif'] = ['SimHei']  
    # 解决无法显示符号的问题
    plt.rcParams['axes.unicode_minus'] = False    
    
    # seaborn默认主题
    # sns.set()
    # 解决Seaborn中文显示问题
    sns.set(font='SimHei',font_scale=0.8)        
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    官网散点图案例,绘制出雅虎股票相邻两天的调整后的收盘价(adj_close)涨跌幅度散点图

    官网散点图案例

    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib.cbook as cbook
    
    # Load a numpy record array from yahoo csv data with fields date, open, close,
    # volume, adj_close from the mpl-data/example directory. The record array
    # stores the date as an np.datetime64 with a day unit ('D') in the date column.
    # 加载数据
    price_data = (cbook.get_sample_data('goog.npz', np_load=True)['price_data']
                  .view(np.recarray))
    # 获取最近250天的交易数据
    price_data = price_data[-250:]  # get the most recent 250 trading days
    # 计算涨跌幅度
    delta1 = np.diff(price_data.adj_close) / price_data.adj_close[:-1]
    
    # Marker size in units of points^2
    # 设置散点图每个点的颜色和大小
    volume = (15 * price_data.volume[:-2] / price_data.volume[0])**2
    close = 0.003 * price_data.close[:-2] / 0.003 * price_data.open[:-2]
    # 设置图表和坐标轴
    fig, ax = plt.subplots()
    # 设置x轴、y轴数据,散点的大小、颜色、透明度属性
    ax.scatter(delta1[:-1], delta1[1:], c=close, s=volume, alpha=0.5)
    # 设置x轴标题
    ax.set_xlabel(r'$\Delta_i$', fontsize=15)
    # 设置y轴标题
    ax.set_ylabel(r'$\Delta_{i+1}$', fontsize=15)
    # 设置标题
    ax.set_title('Volume and percent change')
    # 显示网格线
    ax.grid(True)
    fig.tight_layout()
    # 显示图表
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    散点图绘制结果如下:

    在这里插入图片描述

    seaborn绘制散点图

    seaborn是基于matplotlib封装的高级API库,为绘制各种复杂的图表提供了便利。

    seaborn的官网数据下载缓慢,我已下载完成,放在【数据加工厂】文件夹下,命名为 seaborn_data

    官网案例地址

    # 加载案例数据
    data_path = "../数据加工厂/seaborn_data/tips.csv"
    tips = pd.read_csv(data_path)
    
    # 修改为中文名
    tips.columns = ["总账单","小费","性别","是否吸烟","星期几","时间","大小"]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    用 head 方法进行数据预览

    tips.head()
    
    • 1

    在这里插入图片描述

    绘制出:不同时间段(午餐、晚餐)吸烟的人和不吸烟的人花费的账单和给的小费的关系散点图

    # 绘制散点图
    sns.relplot(
        data=tips,
        x="总账单",
        y="小费", 
        col="时间",
        hue="是否吸烟",
        style="是否吸烟",
    #     size="size"
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    散点图绘制结果如下:

    在这里插入图片描述

    pyecharts绘制散点图

    pyecharts将python和echarts结合起来,具有良好的交互性和观赏性,很适合用于制作数据报表。

    官方案例地址

    from pyecharts import options as opts
    from pyecharts.charts import Scatter
    from pyecharts.faker import Faker
    
    df = pd.DataFrame(data={"名称":Faker.choose(),"商家A":Faker.values(),"商家B":Faker.values()})
    
    • 1
    • 2
    • 3
    • 4
    • 5

    用 head 方法进行数据预览

    df.head()
    
    • 1

    在这里插入图片描述

    c = (
        Scatter()
        .add_xaxis(df["名称"].values.tolist())
        .add_yaxis("商家A", df["商家A"].values.tolist())
        .add_yaxis("商家B", df["商家B"].values.tolist())
        .set_global_opts(
            title_opts=opts.TitleOpts(title="Scatter-VisualMap(Size)"),
            visualmap_opts=opts.VisualMapOpts(type_="size", max_=150, min_=20),
        )
    )
    c.render_notebook()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    散点图绘制结果如下:

    在这里插入图片描述

    源码地址

    链接:https://pan.baidu.com/s/17nJOEDbLDXTNUJSx3TiQtw?pwd=9izg
    提取码:9izg

  • 相关阅读:
    常用数据集格式介绍,自制,比例划分,图片集重组及其转换————COCO介绍(持续更新)
    16.The Tensor Product:Vector/Covector combinations
    靠这份业界最强算法及数据结构宝典,我挺进字节跳动
    思维模型 飞轮效应
    HarmonyOS云开发基础认证---练习题二
    [附源码]Python计算机毕业设计Django新能源汽车租赁
    如果你是独立开发者,你是先写前端还是先写后端?
    第十四届蓝桥杯模拟赛第一期试题与题解Java
    Java线程学习入门(三)
    CentOS7.9.2009离线安装yum命令
  • 原文地址:https://blog.csdn.net/weixin_42060598/article/details/127449132