当前位置: 首页 > news >正文

数据可视化艺术:Matplotlib与Seaborn实战

目录

1.Matplotlib基础绘图与定制化

1.1. 基础绘图

1.2. 定制化

2.Seaborn高级图表类型与样式设定

2.1. 高级图表类型

 2.2. 样式设定

3.实战:绘制多维度数据可视化报告

4.总结


1. 前言

        在数据科学领域,数据可视化扮演着至关重要的角色。通过图形化的展示,我们可以更直观地理解数据的分布、趋势以及不同变量之间的关系。Matplotlib和Seaborn是两个在Python中非常流行的数据可视化库,前者提供了基础的绘图功能,后者则提供了更高级的图表类型和样式设定。接下来,我们将通过实战的方式,探索这两个库在数据可视化中的应用。 更多Python在人工智能中的应用案例,欢迎关注《Python人工智能实战》栏目!

2.Matplotlib基础绘图与定制化

2.1. 基础绘图

        Matplotlib是Python中最为基础且功能强大的数据可视化库之一。它可以绘制各种类型的图表,如折线图、散点图、柱状图等,并且允许用户进行高度定制。

        以下是一些基本图表的创建示例:

import matplotlib.pyplot as plt
import numpy as np# 创建数据
x = np.linspace(0, 2 * np.pi, 100)
y = np.sin(x)# 绘制折线图
plt.plot(x, y, label='Sine Function')
plt.xlabel('Angle (radians)')
plt.ylabel('sin(x)')
plt.legend()
plt.show()  # 显示图形# 绘制散点图
plt.scatter(x, np.cos(x), label='Cosine Function')
plt.xlabel('Angle (radians)')
plt.ylabel('cos(x)')
plt.legend()
plt.show()# 绘制直方图
data = np.random.normal(loc=0, scale=1, size=1000)
plt.hist(data, bins=30, density=True, alpha=0.5, label='Normal Distribution')
plt.xlabel('Value')
plt.ylabel('Density')
plt.legend()
plt.show()
本例中折线图效果
本例中散点图效果
本例中直方图效果

 2.2. 定制化

        Matplotlib允许对图表的各个元素进行精细定制,包括颜色、线条样式、字体、坐标轴、图例、网格等。以下是对折线图进行定制的例子:

import matplotlib.pyplot as plt
import numpy as npx = np.linspace(0, 2 * np.pi, 100)
y = np.sin(x)# 自定义颜色、线宽、线型
plt.plot(x, y, color='crimson', linewidth=2.5, linestyle='--')# 设置坐标轴范围、刻度
plt.xlim([0, 2*np.pi])
# 使用LaTeX格式显示π
plt.xticks((-np.pi, -np.pi/2, np.pi/2, np.pi),(r'$\pi$', r'$-\frac{\pi}{2}$', r'$\frac{\pi}{2}$', r'$\pi$'))
# 添加图例、标题、网格
plt.legend(['Sine Function'])
plt.title('Customized Sine Plot')
plt.grid(True, linestyle='dashed', alpha=0.9)# 修改字体、背景色
plt.rcParams['font.family'] = 'Arial'
plt.rcParams['axes.facecolor'] = 'lightgoldenrodyellow'plt.show()
定制化效果

3.Seaborn高级图表类型与样式设定

        Seaborn是基于Matplotlib的高级统计图形库,提供更高级别的接口和更美观的默认样式。它特别擅长展示多变量数据的复杂关系。

3.1. 高级图表类型

  • 线性回归图:展示两个连续变量之间的线性关系及其置信区间。
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pdtips = sns.load_dataset("tips")sns.lmplot(x="total_bill", y="tip", data=tips, hue="day", palette="muted")
plt.show()
线性回归图

  • 热力图:展示数据的二维矩阵,用颜色强度表示数值大小。
import seaborn as sns
import pandas as pd
from matplotlib import pyplot as plt
tips = sns.load_dataset("tips")
# pandas2.0版本后,原来corr函数自动忽略字符串等非浮点数的特性被修改。现在需要加上numeric_only=True才会忽略字符串。
corr = tips.corr(numeric_only=True)
sns.heatmap(corr, annot=True, cmap='coolwarm')
plt.show()
热力图

 3.2. 样式设定

        Seaborn提供多种内置样式,可以通过set_theme()函数全局设置:

import seaborn as sns
# style 包括:darkgrid、whitegrid、dark、white
sns.set_theme(style="darkgrid")  # 设置为深色网格样式# 继续绘制图表...

        也可以针对特定图表进行单独样式调整,如更改颜色映射、设置透明度等。

4.实战:绘制多维度数据可视化报告

        以鸢尾花(Iris)数据集为例,我们使用Matplotlib与Seaborn联合创建一份包含多种图表的可视化报告:

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
from sklearn.datasets import load_iris
import numpy as np
iris = load_iris()
df = pd.DataFrame(data=np.c_[iris['data'], iris['target']],columns=iris['feature_names'] + ['species'])
print(df.columns)
# 分析不同物种花瓣长度与宽度的关系
sns.lmplot(x='sepal length (cm)', y='petal width (cm)', data=df, hue='species', col='species', ci=None)plt.suptitle('Petal Length vs Width by Species')# 展示所有特征间的相关性
corr = df.corr()
sns.heatmap(corr, annot=True, cmap='coolwarm', linewidths=.5)
plt.title('Feature Correlation Matrix')# 绘制箱线图对比各物种的萼片长度
sns.boxplot(x='species', y='sepal length (cm)', data=df, palette='Set2')
plt.title('Sepal Length Distribution Across Species')plt.show()

        

多维度数据可视化报告

        这份报告包含了线性回归图、热力图以及箱线图,分别展示了鸢尾花不同物种间花瓣长度与宽度的关系、所有特征的相关性,以及萼片长度在不同物种间的分布情况。通过这样的多维度可视化,我们可以直观地洞察数据内在结构与关联,为后续数据分析提供有力支持。

5.总结

        以上就是利用Matplotlib与Seaborn进行数据可视化的基础操作与实战应用,熟练掌握这些技巧将极大地提升数据洞察力和沟通效率。 更多Python在人工智能中的使用方法,欢迎关注《Python人工智能实战》栏目!

http://www.lryc.cn/news/325365.html

相关文章:

  • python初级第一次作业
  • Spring Boot整合Camunda打造高效工作流程
  • 2.8、下拉刷新与上拉加载
  • java Web餐馆订单管理系统用eclipse定制开发mysql数据库BS模式java编程jdbc
  • 小程序从入门到入坑:事件系统
  • Windows蓝牙驱动开发之模拟HID设备(二)(把Windows电脑模拟成蓝牙鼠标和蓝牙键盘等设备)
  • 快速区分清楚图形渲染中的AABB,KD树和BVH这些概念
  • Rust 的 HashMap 特定键值元素值的累加方法
  • Java后端项目性能优化实战-群发通知
  • 5、Jenkins持续集成-Maven和Tomcat的安装与配置
  • Qt教程 — 3.7 深入了解Qt 控件: Layouts部件
  • 自动驾驶的几种名词
  • 华为全套企业管理资料合集(21专题)
  • LeetCode Python - 74. 搜索二维矩阵
  • 如何安全地添加液氮到液氮罐中
  • LGBM算法 原理
  • 【WPF应用5】WPF中的TextBlock控件:属性与事件详解及示例
  • 【C语言基础】:内存操作函数
  • 3.24作业
  • Excel双击单元格后弹窗输入日期
  • 原生 HTML/CSS/JS 实现右键菜单和二级菜单
  • [项目前置]如何用webbench进行压力测试
  • 网络七层模型:理解网络通信的架构(〇)
  • format(C++20)
  • Ftrans安全数据摆渡系统 构建便捷的内外网数据交换通道
  • 【云开发笔记No.14】持续交付、持续部署、持续交付流水线
  • 蓝桥杯练习07小兔子爬楼梯
  • Docker in Docker原理与实战
  • Ruoyi若依框架下载流程详细解读(SpringBoot-Vue)
  • 【深度学习】Pytorch中实现交叉熵损失计算的方式总结