文章目录
- matplotlib 的绘图基本步骤: 创建画布 准备数据集,X轴,Y轴 可选:颜色,线型,标签,网格,图例,标题,坐标轴标签。 绘制图像 import matplotlib.pyplot as plt # 创建一个10英寸的宽和5英寸的高的画布 # dpi 点数 80,表示清晰度。 # 10 * 80,5 * 80 plt.figure(figsize=(10, 5), dpi=80) # 准备数据 x = [1, 2, 3, 4, 5, 6, 7] y = [6, 2, 10, 14, 21, 25, 30] # 准备绘制 plt.plot(x, y) # 折线图 # 展示图 plt.show()
- import matplotlib.pyplot as plt # 设置中文 plt.rcParams[‘font.sans-serif’] = [‘SimHei’] plt.rcParams[‘axes.unicode_minus’] = False 通过 plt.xticks 和 plt.yticks 设置对应的刻度尺 # 返回一个迭代对象,0 – 60,这是 X轴 x = range(60) # y 轴,范围 15 ~ 18 y = [random.uniform(15, 18) for i in x] # 创建画布 plt.figure(figsize=(10, 5), dpi=80) # 绘制图像 plt.plot(x, y) # 自定义X轴和Y轴 x_ticks_label = [f’11点{i}分’ for i in x] y_ticks_label = [i for i in range(0, 25)] # 具体设置,但是如果不切片,那会显得很密集,所以需要切片,注意必须都切片 plt.xticks(x[::5], x_ticks_label[::5]) plt.yticks(y_ticks_label[::5]) # 显示 plt.show()
- 主要实现plt.grid linestyle:设置线风格。 (-)实线 (–)虚线 (-.)一个杠一个. (:)两个点 (' ')留空、空格 alpha:设置透明度,最大1,最小0 设置标题 / 保存为图片 xlabel ylabel title savefig import matplotlib.pyplot as plt import random x = range(60) y = [random.uniform(15, 18) for i in x] plt.figure(figsize=(10, 5), dpi=80) plt.plot(x, y) # 自定义X轴和Y轴 x_ticks_label = [f’11点{i}分’ for i in x] y_ticks_label = [i for i in range(0, 25)] plt.xticks(x[::5], x_ticks_label[::5]) plt.yticks(y_ticks_label[::5]) # 添加网格 plt.grid(linestyle=’:’, alpha=1) # 添加标签 plt.xlabel(‘时间’, fontsize=15) plt.ylabel(‘温度’, fontsize=15) # 添加标题 plt.title(‘温度变化曲线’, fontsize=20) plt.savefig(‘temp.png’) plt.show()
- 绘制多个图的关键点,给每个plot要加一个label,表示名字,后续图例使用。 color 用于设置颜色,生成的图例有颜色。 label 文字 # 准备数据 x = range(60) # 第一个图的数据 y = [random.uniform(15, 18) for i in x] # 第二个图的数据 m = [random.uniform(1, 10) for i in x] plt.figure(figsize=(10, 5), dpi=80) # 绘制第一个线 plt.plot(x, y, label=’北京’) # 绘制第二个线 plt.plot(x, m, label=’摩诃’) 颜色字符 风格字符 r 红色 – 实线 g 绿色 – – 虚线 b 蓝色 -. 点划线 w 白色 : 点虚线 c 青色 ' ' 留空、空格 m 洋红 y 黄色 k 黑色 加图例的关键代码,loc 设置 best,表示自动匹配最好的位置。这个 loc 会根据 label 来匹配,如果在绘制时没设置 label,不会生成的。 loc 设置图例位置 # 增加图例 plt.legend(loc=’best’) 设置位置 位置 string 位置代码 'best' 0 'upper right' 1 'upper left' 2 'lower left' 3 'lower right' 4 'right' 5 'center left' 6 'center right' 7 'lower center' 8 'upper center' 9 'center' 10 完整代码演示 import matplotlib.pyplot as plt import random # 准备数据 x = range(60) # 第一个图的数据 y = [random.uniform(15, 18) for i in x] # 第二个图的数据 m = [random.uniform(1, 10) for i in x] plt.figure(figsize=(10, 5), dpi=80) # 绘制第一个线 plt.plot(x, y, label=’北京’, color=’r’) # 绘制第二个线 plt.plot(x, m, label=’摩诃’, color=’c’) # 增加图例 plt.legend(loc=’best’) x_ticks_label = [f’11点{i}分’ for i in x] y_ticks_label = [i for i in range(0, 25)] plt.xticks(x[::5], x_ticks_label[::5]) plt.yticks(y_ticks_label[::5]) plt.grid(linestyle=’:’, alpha=1) plt.xlabel(‘时间’, fontsize=15) plt.ylabel(‘温度’, fontsize=15) plt.title(‘温度变化曲线’, fontsize=20) plt.show()
- 主要是通过下面,获取到了分割后的画布,对每个画布进行单独设置。 fig, ax = plt.subplots(figsize=(20, 8), nrows=1, ncols=2) 完整代码 import matplotlib.pyplot as plt import random # 准备数据 x = range(60) y = [random.uniform(15, 18) for i in x] m = [random.uniform(1, 10) for i in x] # 面向对象绘图,fig -> 画布(1行2列的画布),ax -> 坐标系 fig, ax = plt.subplots(figsize=(20, 8), nrows=1, ncols=2) # 绘制图像 ax[0].plot(x, y, color=’r’, label=’北京’) ax[1].plot(x, m, color=’c’, label=’摩诃’) # 添加刻度 # 刻度变量 x_ticks_label = [f’11点{i}分’ for i in x] y_ticks_label = [i for i in range(0, 25)] # 具体添加刻度的操作 ax[0].set_xticks(x[::5]) # 图 1 的 x轴 ax[0].set_yticks(y_ticks_label[::5]) # 图 1 的 y轴 ax[0].set_xticklabels(x_ticks_label[::5]) # 图 1 的 x轴的值 # 具体添加刻度的操作 ax[1].set_xticks(x[::5]) # 图 1 的 x轴 ax[1].set_yticks(y_ticks_label[::5]) # 图 1 的 y轴 ax[1].set_xticklabels(x_ticks_label[::5]) # 图 1 的 x轴的值 plt.show() 目前是这样,我们继续添加 设置 x y 轴的标题和大小 ax[0].set_ylabel(‘温度’) ax[0].set_xlabel(‘时间’) ax[0].set_title(‘一段时间的温度变化’, fontsize=20) ax[1].set_ylabel(‘温度’) ax[1].set_xlabel(‘时间’) ax[1].set_title(‘一段时间的温度变化’, fontsize=20) # 添加图例 ax[0].legend(loc=’best’) ax[1].legend(loc=0) # 保存图片 plt.savefig(‘test.png’) plt.show()
- matplotlib.org/stable/gallery/index.html 官方案例库 折线图用来看趋势 柱状图用来看对比 直方图用来展示数据的分布情况 散点图用来描述两个连续变量之间的关系 绘制柱状图 import matplotlib.pyplot as plt # 1. 准备数据 x = [‘A’, ‘B’, ‘C’, ‘D’, ‘E’] y = [3, 6, 1, 8, 2] # 额外可以设置画布大小 plt.figure(figsize=(20,8)) # 2. 绘制柱状图 plt.bar(x, y, color=’r’) # 3. 设置 x轴,y轴标签 和标题 plt.xlabel(‘分类名’) plt.ylabel(‘商品个数’) plt.title(‘商品分类统计图’, fontsize=15) plt.show()
- 由一系列高度不等的纵向条纹或线段表示数据分布的情况。 一般用横轴表示数据范围,纵轴表示分布情况。 特点:绘制连续性的数据展示一组或者多组数据的分布状况(统计) import matplotlib.pyplot as plt import numpy as np # 1. 准备数据 data = np.random.randn(500) # 2. 创建面板 plt.figure(figsize=(20, 8)) # 3. 绘制图形,rwidth 柱子之间的宽度,bins 柱子大小 plt.hist(data, bins=20, color=’r’, alpha=0.5, rwidth=0.8) # 4. 显示 plt.show()
- import matplotlib.pyplot as plt # 准备数据 sizes = [25, 35, 25, 15] # 分类标签 labels = [‘电脑’, ‘手机’, ‘键盘’, ‘鼠标’] # 就提绘图动作, autopct 显示百分比 plt.pie(sizes, labels=labels, autopct=’%1.1f%%’) # 设置图表标题 plt.title(“Simple Pie Chart”) plt.show()
- import matplotlib.pyplot as plt x = [1, 2, 3, 4, 5] y = [2, 3, 5, 7, 11] plt.scatter(x, y, color=’red’) # 绘制红色散点图 plt.title(“Simple Scatter Plot”) # 设置图表标题 plt.xlabel(“X-axis”) # 设置X轴标签 plt.ylabel(“Y-axis”) # 设置Y轴标签 plt.show() # 显示图表
- df[‘province’].value_counts().head(10).plot.bar(fontsize=15, figsize=(10,6), color=[‘r’, ‘g’, ‘b’, ‘y’, ‘c’, ‘m’, ‘k’, ‘pink’, ‘gray’, ‘orange’])
- kwords = dict(fontsize=15, figsize=(10, 6), color=[‘r’, ‘g’, ‘b’, ‘y’, ‘c’, ‘m’, ‘k’, ‘pink’, ‘gray’, ‘orange’]) df[‘province’].value_counts().head(10).plot.area(**kwords)
- 获取产葡萄酒最多的10个产地的 占比 kwords = dict(fontsize=15, figsize=(10, 6), color=[‘r’, ‘g’, ‘b’, ‘y’, ‘c’, ‘m’, ‘k’, ‘pink’, ‘gray’, ‘orange’]) (df[‘province’].value_counts().head(10) / len(df)).plot.bar(**kwords) 展示每个评分的葡萄酒种类(个数) kwords = dict(fontsize=15, figsize=(10, 6), color=[‘r’, ‘g’, ‘b’, ‘y’, ‘c’, ‘m’, ‘k’, ‘pink’, ‘gray’, ‘orange’]) df[‘points’].value_counts().sort_index().plot.bar(**kwords) # 柱状图 df[‘points’].value_counts().sort_index().plot.area(**kwords) # 面积图 df[‘points’].value_counts().sort_index().plot.line(**kwords) # 折线图
- 按照性别,进行统计 x 是绘制的列名 hue 是分组的名字 import seaborn as sns # 联网加载数据集 df = sns.load_dataset(‘tips’) # 按照性别字段进行统计 sns.countplot(data=df, x=’sex’) sns.countplot(data=df, x=’day’, hue=’sex’)
- import seaborn as sns # 联网加载数据集 df = sns.load_dataset(‘tips’) sns.histplot(data=df, x=’total_bill’, hue=’sex’) 如何修改画布大小和标题 import seaborn as sns import matplotlib.pyplot as plt # 设置乱码 plt.rcParams[‘font.sans-serif’] = [‘SimHei’] plt.rcParams[‘axes.unicode_minus’] = False fig, ax = plt.subplots(figsize=(10, 6)) sns.histplot(data=df, x=’total_bill’, hue=’sex’) ax.set_title(‘男女总账单分布情况’, fontsize=20) plt.show()
- 需求:描述总账单金额和小费的分布情况(散点图,关系图) import seaborn as sns import matplotlib.pyplot as plt plt.rcParams[‘font.sans-serif’] = [‘SimHei’] plt.rcParams[‘axes.unicode_minus’] = False fig, ax = plt.subplots(figsize=(10, 6)) # x轴。总账单,y轴,消费,按照性别分组 sns.scatterplot(data=df, x=’total_bill’, y=’tip’, hue=’sex’) ax.set_title(‘总账单金额和小费的关系图’, fontsize=20) plt.show() 还有其他方式绘制出,散点图,它不能使用分组 # 拟合回归线 sns.regplot(data=df, x=’total_bill’, y=’tip’) 还有一种方式,带上直方图的散点图,注意它不需要和上面代码混合在一起,它自带画布等 import seaborn as sns import matplotlib.pyplot as plt sns.jointplot(data=df, x=’total_bill’, y=’tip’) plt.show() 它如果加上,分组,会使用折线图,而不是直方图 sns.jointplot(data=df, x=’total_bill’, y=’tip’, hue=’sex’) plt.show() 加上 kind = red,使用正态分布,它不允许与 hue 分组一起使用 sns.jointplot(data=df, x=’total_bill’, y=’tip’, kind=’reg’) plt.show() 还可以变成,蜂巢图 sns.jointplot(data=df, x=’total_bill’, y=’tip’, kind=’hex’) plt.show()
- Q3:四分之三 中位数:二分之一 q1:四分之一 import seaborn as sns import matplotlib.pyplot as plt # 联网加载数据集 df = sns.load_dataset(‘tips’) # 线箱图 sns.boxplot(data=df, x=’time’, y=’total_bill’) plt.show()
- import seaborn as sns import matplotlib.pyplot as plt # 联网加载数据集 df = sns.load_dataset(‘tips’) sns.violinplot(data=df, x=’time’, y=’total_bill’) plt.show() 希望分组,使用 hue sns.violinplot(data=df, x=’time’, y=’total_bill’, hue=’sex’) 希望切割,使用 split sns.violinplot(data=df, x=’time’, y=’total_bill’, hue=’sex’, split=True) 以上就是Matplotlib可视化之使用pandas和Seaborn绘制精美图表详解的详细内容,更多关于Matplotlib可视化绘图的资料请关注风君子博客其它相关文章! 您可能感兴趣的文章: Python可视化与交互matplotlib库的详细介绍 Python可视化工具Matplotlib的20种图表用法 使用Python Matplotlib处理地理数据可视化 使用Matplotlib创建自定义可视化图表的方法小结 使用Matplotlib创建漂亮的数据可视化图表 matplotlib实现矩阵和图像的可视化表示 使用Python的数据可视化库Matplotlib实现折线图 Python数据可视化实践之使用Matplotlib绘制图表
目录
- Matplotlib 可视化
- 入门演示
- 设置刻度尺,配置中文
- 添加网格,标题
- 一张图绘制多个 / 增加图例
- 多个坐标系,在一个画布
- 其他图像绘制
- 绘制直方图
- 绘制饼图
- 散点图
- pandas 绘图
- 柱状图
- 面积图
- 案例
- Seaborn 绘图
- 柱状图
- 绘制直方图
- 案例
- 箱线图 / 何须图
- 小提琴图
matplotlib 的绘图基本步骤:
- 创建画布
- 准备数据集,X轴,Y轴
- 可选:颜色,线型,标签,网格,图例,标题,坐标轴标签。
- 绘制图像
import matplotlib.pyplot as plt # 创建一个10英寸的宽和5英寸的高的画布 # dpi 点数 80,表示清晰度。 # 10 * 80,5 * 80 plt.figure(figsize=(10, 5), dpi=80) # 准备数据 x = [1, 2, 3, 4, 5, 6, 7] y = [6, 2, 10, 14, 21, 25, 30] # 准备绘制 plt.plot(x, y) # 折线图 # 展示图 plt.show()
import matplotlib.pyplot as plt
# 设置中文
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
通过 plt.xticks 和 plt.yticks 设置对应的刻度尺
# 返回一个迭代对象,0 - 60,这是 X轴
x = range(60)
# y 轴,范围 15 ~ 18
y = [random.uniform(15, 18) for i in x]
# 创建画布
plt.figure(figsize=(10, 5), dpi=80)
# 绘制图像
plt.plot(x, y)
# 自定义X轴和Y轴
x_ticks_label = [f'11点{i}分' for i in x]
y_ticks_label = [i for i in range(0, 25)]
# 具体设置,但是如果不切片,那会显得很密集,所以需要切片,注意必须都切片
plt.xticks(x[::5], x_ticks_label[::5])
plt.yticks(y_ticks_label[::5])
# 显示
plt.show()

主要实现plt.grid
- linestyle:设置线风格。
- (-)实线
- (–)虚线
- (-.)一个杠一个.
- (:)两个点
- (' ')留空、空格
- alpha:设置透明度,最大1,最小0
设置标题 / 保存为图片
- xlabel
- ylabel
- title
- savefig
import matplotlib.pyplot as plt
import random
x = range(60)
y = [random.uniform(15, 18) for i in x]
plt.figure(figsize=(10, 5), dpi=80)
plt.plot(x, y)
# 自定义X轴和Y轴
x_ticks_label = [f'11点{i}分' for i in x]
y_ticks_label = [i for i in range(0, 25)]
plt.xticks(x[::5], x_ticks_label[::5])
plt.yticks(y_ticks_label[::5])
# 添加网格
plt.grid(linestyle=':', alpha=1)
# 添加标签
plt.xlabel('时间', fontsize=15)
plt.ylabel('温度', fontsize=15)
# 添加标题
plt.title('温度变化曲线', fontsize=20)
plt.savefig('temp.png')
plt.show()
绘制多个图的关键点,给每个plot要加一个label,表示名字,后续图例使用。
- color 用于设置颜色,生成的图例有颜色。
- label 文字
# 准备数据 x = range(60) # 第一个图的数据 y = [random.uniform(15, 18) for i in x] # 第二个图的数据 m = [random.uniform(1, 10) for i in x] plt.figure(figsize=(10, 5), dpi=80) # 绘制第一个线 plt.plot(x, y, label='北京') # 绘制第二个线 plt.plot(x, m, label='摩诃')
| 颜色字符 | 风格字符 |
|---|---|
| r 红色 | – 实线 |
| g 绿色 | – – 虚线 |
| b 蓝色 | -. 点划线 |
| w 白色 | : 点虚线 |
| c 青色 | ' ' 留空、空格 |
| m 洋红 | |
| y 黄色 | |
| k 黑色 |
加图例的关键代码,loc 设置 best,表示自动匹配最好的位置。这个 loc 会根据 label 来匹配,如果在绘制时没设置 label,不会生成的。
loc 设置图例位置
# 增加图例 plt.legend(loc='best')
设置位置
| 位置 string | 位置代码 |
|---|---|
| 'best' | 0 |
| 'upper right' | 1 |
| 'upper left' | 2 |
| 'lower left' | 3 |
| 'lower right' | 4 |
| 'right' | 5 |
| 'center left' | 6 |
| 'center right' | 7 |
| 'lower center' | 8 |
| 'upper center' | 9 |
| 'center' | 10 |
完整代码演示
import matplotlib.pyplot as plt
import random
# 准备数据
x = range(60)
# 第一个图的数据
y = [random.uniform(15, 18) for i in x]
# 第二个图的数据
m = [random.uniform(1, 10) for i in x]
plt.figure(figsize=(10, 5), dpi=80)
# 绘制第一个线
plt.plot(x, y, label='北京', color='r')
# 绘制第二个线
plt.plot(x, m, label='摩诃', color='c')
# 增加图例
plt.legend(loc='best')
x_ticks_label = [f'11点{i}分' for i in x]
y_ticks_label = [i for i in range(0, 25)]
plt.xticks(x[::5], x_ticks_label[::5])
plt.yticks(y_ticks_label[::5])
plt.grid(linestyle=':', alpha=1)
plt.xlabel('时间', fontsize=15)
plt.ylabel('温度', fontsize=15)
plt.title('温度变化曲线', fontsize=20)
plt.show()
主要是通过下面,获取到了分割后的画布,对每个画布进行单独设置。
fig, ax = plt.subplots(figsize=(20, 8), nrows=1, ncols=2)
完整代码
import matplotlib.pyplot as plt
import random
# 准备数据
x = range(60)
y = [random.uniform(15, 18) for i in x]
m = [random.uniform(1, 10) for i in x]
# 面向对象绘图,fig -> 画布(1行2列的画布),ax -> 坐标系
fig, ax = plt.subplots(figsize=(20, 8), nrows=1, ncols=2)
# 绘制图像
ax[0].plot(x, y, color='r', label='北京')
ax[1].plot(x, m, color='c', label='摩诃')
# 添加刻度
# 刻度变量
x_ticks_label = [f'11点{i}分' for i in x]
y_ticks_label = [i for i in range(0, 25)]
# 具体添加刻度的操作
ax[0].set_xticks(x[::5]) # 图 1 的 x轴
ax[0].set_yticks(y_ticks_label[::5]) # 图 1 的 y轴
ax[0].set_xticklabels(x_ticks_label[::5]) # 图 1 的 x轴的值
# 具体添加刻度的操作
ax[1].set_xticks(x[::5]) # 图 1 的 x轴
ax[1].set_yticks(y_ticks_label[::5]) # 图 1 的 y轴
ax[1].set_xticklabels(x_ticks_label[::5]) # 图 1 的 x轴的值
plt.show()

目前是这样,我们继续添加
设置 x y 轴的标题和大小
ax[0].set_ylabel('温度')
ax[0].set_xlabel('时间')
ax[0].set_title('一段时间的温度变化', fontsize=20)
ax[1].set_ylabel('温度')
ax[1].set_xlabel('时间')
ax[1].set_title('一段时间的温度变化', fontsize=20)
# 添加图例
ax[0].legend(loc='best')
ax[1].legend(loc=0)
# 保存图片
plt.savefig('test.png')
plt.show()
matplotlib.org/stable/gallery/index.html 官方案例库
- 折线图用来看趋势
- 柱状图用来看对比
- 直方图用来展示数据的分布情况
- 散点图用来描述两个连续变量之间的关系
绘制柱状图
import matplotlib.pyplot as plt
# 1. 准备数据
x = ['A', 'B', 'C', 'D', 'E']
y = [3, 6, 1, 8, 2]
# 额外可以设置画布大小
plt.figure(figsize=(20,8))
# 2. 绘制柱状图
plt.bar(x, y, color='r')
# 3. 设置 x轴,y轴标签 和标题
plt.xlabel('分类名')
plt.ylabel('商品个数')
plt.title('商品分类统计图', fontsize=15)
plt.show()

由一系列高度不等的纵向条纹或线段表示数据分布的情况。 一般用横轴表示数据范围,纵轴表示分布情况。
特点:绘制连续性的数据展示一组或者多组数据的分布状况(统计)
import matplotlib.pyplot as plt import numpy as np # 1. 准备数据 data = np.random.randn(500) # 2. 创建面板 plt.figure(figsize=(20, 8)) # 3. 绘制图形,rwidth 柱子之间的宽度,bins 柱子大小 plt.hist(data, bins=20, color='r', alpha=0.5, rwidth=0.8) # 4. 显示 plt.show()

import matplotlib.pyplot as plt
# 准备数据
sizes = [25, 35, 25, 15]
# 分类标签
labels = ['电脑', '手机', '键盘', '鼠标']
# 就提绘图动作, autopct 显示百分比
plt.pie(sizes, labels=labels, autopct='%1.1f%%')
# 设置图表标题
plt.title("Simple Pie Chart")
plt.show()

import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
plt.scatter(x, y, color='red') # 绘制红色散点图
plt.title("Simple Scatter Plot") # 设置图表标题
plt.xlabel("X-axis") # 设置X轴标签
plt.ylabel("Y-axis") # 设置Y轴标签
plt.show() # 显示图表

要统计个数的两种方式
# 思路一:稍微复杂一点
# df.groupby('province')['province'].count().sort_values(ascending=False).head(10)
df['province'].value_counts()
df['province'].value_counts().head(10).plot.bar(fontsize=15, figsize=(10,6), color=['r', 'g', 'b', 'y', 'c', 'm', 'k', 'pink', 'gray', 'orange'])

kwords = dict(fontsize=15, figsize=(10, 6), color=['r', 'g', 'b', 'y', 'c', 'm', 'k', 'pink', 'gray', 'orange'])
df['province'].value_counts().head(10).plot.area(**kwords)

获取产葡萄酒最多的10个产地的 占比
kwords = dict(fontsize=15, figsize=(10, 6), color=['r', 'g', 'b', 'y', 'c', 'm', 'k', 'pink', 'gray', 'orange']) (df['province'].value_counts().head(10) / len(df)).plot.bar(**kwords)

展示每个评分的葡萄酒种类(个数)
kwords = dict(fontsize=15, figsize=(10, 6), color=['r', 'g', 'b', 'y', 'c', 'm', 'k', 'pink', 'gray', 'orange']) df['points'].value_counts().sort_index().plot.bar(**kwords) # 柱状图 df['points'].value_counts().sort_index().plot.area(**kwords) # 面积图 df['points'].value_counts().sort_index().plot.line(**kwords) # 折线图

底层依赖 Matplotlib
pip install seaborn
已知数据

按照性别,进行统计
- x 是绘制的列名
- hue 是分组的名字
import seaborn as sns
# 联网加载数据集
df = sns.load_dataset('tips')
# 按照性别字段进行统计
sns.countplot(data=df, x='sex')
sns.countplot(data=df, x='day', hue='sex')


import seaborn as sns
# 联网加载数据集
df = sns.load_dataset('tips')
sns.histplot(data=df, x='total_bill', hue='sex')

如何修改画布大小和标题
import seaborn as sns
import matplotlib.pyplot as plt
# 设置乱码
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
fig, ax = plt.subplots(figsize=(10, 6))
sns.histplot(data=df, x='total_bill', hue='sex')
ax.set_title('男女总账单分布情况', fontsize=20)
plt.show()

需求:描述总账单金额和小费的分布情况(散点图,关系图)
import seaborn as sns
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
fig, ax = plt.subplots(figsize=(10, 6))
# x轴。总账单,y轴,消费,按照性别分组
sns.scatterplot(data=df, x='total_bill', y='tip', hue='sex')
ax.set_title('总账单金额和小费的关系图', fontsize=20)
plt.show()
还有其他方式绘制出,散点图,它不能使用分组
# 拟合回归线 sns.regplot(data=df, x='total_bill', y='tip')

还有一种方式,带上直方图的散点图,注意它不需要和上面代码混合在一起,它自带画布等
import seaborn as sns import matplotlib.pyplot as plt sns.jointplot(data=df, x='total_bill', y='tip') plt.show()

它如果加上,分组,会使用折线图,而不是直方图
sns.jointplot(data=df, x='total_bill', y='tip', hue='sex') plt.show()

加上 kind = red,使用正态分布,它不允许与 hue 分组一起使用
sns.jointplot(data=df, x='total_bill', y='tip', kind='reg') plt.show()

还可以变成,蜂巢图
sns.jointplot(data=df, x='total_bill', y='tip', kind='hex') plt.show()

- Q3:四分之三
- 中位数:二分之一
- q1:四分之一
import seaborn as sns
import matplotlib.pyplot as plt
# 联网加载数据集
df = sns.load_dataset('tips')
# 线箱图
sns.boxplot(data=df, x='time', y='total_bill')
plt.show()

import seaborn as sns
import matplotlib.pyplot as plt
# 联网加载数据集
df = sns.load_dataset('tips')
sns.violinplot(data=df, x='time', y='total_bill')
plt.show()

希望分组,使用 hue
sns.violinplot(data=df, x='time', y='total_bill', hue='sex')
希望切割,使用 split
sns.violinplot(data=df, x='time', y='total_bill', hue='sex', split=True)
以上就是Matplotlib可视化之使用pandas和Seaborn绘制精美图表详解的详细内容,更多关于Matplotlib可视化绘图的资料请关注风君子博客其它相关文章!
您可能感兴趣的文章:
- Python可视化与交互matplotlib库的详细介绍
- Python可视化工具Matplotlib的20种图表用法
- 使用Python Matplotlib处理地理数据可视化
- 使用Matplotlib创建自定义可视化图表的方法小结
- 使用Matplotlib创建漂亮的数据可视化图表
- matplotlib实现矩阵和图像的可视化表示
- 使用Python的数据可视化库Matplotlib实现折线图
- Python数据可视化实践之使用Matplotlib绘制图表