Python数据分析实战【八】:用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 

在绘制图表的时候 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)        

官网散点图案例,绘制出雅虎股票相邻两天的调整后的收盘价(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()

散点图绘制结果如下:

在这里插入图片描述

seaborn绘制散点图

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

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

官网案例地址

# 加载案例数据
data_path = "../数据加工厂/seaborn_data/tips.csv"
tips = pd.read_csv(data_path)

# 修改为中文名
tips.columns = ["总账单","小费","性别","是否吸烟","星期几","时间","大小"]

用 head 方法进行数据预览

tips.head()

在这里插入图片描述

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

# 绘制散点图
sns.relplot(
    data=tips,
    x="总账单",
    y="小费", 
    col="时间",
    hue="是否吸烟",
    style="是否吸烟",
#     size="size"
)

散点图绘制结果如下:

在这里插入图片描述

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()})

用 head 方法进行数据预览

df.head()

在这里插入图片描述

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()

散点图绘制结果如下:

在这里插入图片描述

源码地址

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

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

帅帅的Python

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

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

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

打赏作者

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

抵扣说明:

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

余额充值