统计图表绘制:用matplotlib掌握基本统计图形
发布时间: 2024-09-30 01:35:55 阅读量: 47 订阅数: 33 ![](https://csdnimg.cn/release/wenkucmsfe/public/img/col_vip.0fdee7e1.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/col_vip.0fdee7e1.png)
![PDF](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PDF.png)
数据可视化实战:使用Matplotlib和Seaborn的艺术
![python库文件学习之matplotlib](http://archive.fabacademy.org/archives/2016/fablabsingapore/students/156/photo/16_matplotlib_install.jpg)
# 1. matplotlib库概述与安装配置
matplotlib是Python中一个广泛使用的开源绘图库,特别在数据可视化领域有着举足轻重的地位。它最初由John D. Hunter开发,并且受到GNUplot的启发,旨在提供一个强大的2D绘图框架,同时保持简单易用的特性。
## 安装matplotlib
要开始使用matplotlib,首先需要进行安装。可以通过pip包管理器轻松安装:
```bash
pip install matplotlib
```
安装完成后,可以通过Python的import语句导入matplotlib,并使用它提供的绘图功能。
```python
import matplotlib.pyplot as plt
plt.plot([1, 2, 3], [4, 5, 6])
plt.show()
```
以上代码创建了一个简单的折线图,并通过`plt.show()`显示出来。 matplotlib的安装和基础使用非常简单,但其功能远不止于此,后续章节将深入探讨matplotlib的高级用法。
# 2. matplotlib的基础图形绘制技巧
### 2.1 matplotlib图形界面架构
#### 2.1.1 图形和轴的基本概念
在开始绘制基础图形之前,我们需要了解matplotlib中图形(Figure)和轴(Axes)的基本概念。图形是整个绘图区域的容器,轴是放置坐标系和图形元素的对象,每个图形可以包含多个轴。理解这一点,可以帮助我们更有效地布局和组织图形元素。
```python
import matplotlib.pyplot as plt
# 创建一个图形实例
fig = plt.figure()
# 在图形上添加一个轴实例
ax = fig.add_subplot(111) # 1行1列第1个子图
# 设置轴的标题
ax.set_title('Example of Figure and Axes')
# 显示图形
plt.show()
```
在这段代码中,`plt.figure()` 创建了一个图形实例,而 `fig.add_subplot(111)` 则在图形上添加了一个轴实例。`ax.set_title()` 方法用于设置轴的标题。通过这种方式,我们可以为每个轴定制不同类型的图形。
#### 2.1.2 坐标系与变换
matplotlib提供了一套灵活的坐标系与变换系统,允许用户对图形中的元素进行精确控制。这些变换可以是线性的,如平移和缩放,也可以是更复杂的,如对数或极坐标变换。
```python
import numpy as np
x = np.linspace(0, 10, 100)
y = np.sin(x)
fig, ax = plt.subplots()
# 绘制原始数据点
ax.plot(x, y, label='Original')
# 应用极坐标变换
ax.set_xlim([0, 10])
ax.set_ylim([-1, 1])
ax.set_rorigin(-1)
# 设置极坐标标签
ax.set_xticks(np.pi/2 * np.linspace(0, 2, 5))
ax.set_xticklabels(['0', r'$\frac{\pi}{2}$', r'$\pi$', r'$\frac{3\pi}{2}$', r'$2\pi$'])
# 显示图形
plt.legend()
plt.show()
```
在这段代码中,我们首先生成了一些正弦波数据点,并用 `ax.plot()` 绘制。然后我们通过 `ax.set_xlim()` 和 `ax.set_ylim()` 设置了轴的范围,`ax.set_rorigin()` 设置了极坐标变换的起点。最后,我们设置了极坐标轴的刻度标签,通过这种方式,我们就可以在图形界面上展示极坐标变换后的图形。
### 2.2 绘制基本统计图形
#### 2.2.1 条形图和直方图的绘制方法
条形图和直方图是数据分析中常用的基本图形。条形图适用于展示分类数据的分布,而直方图用于展示连续数据的分布情况。在matplotlib中,我们可以使用 `bar()` 函数绘制条形图,使用 `hist()` 函数绘制直方图。
```python
import numpy as np
import matplotlib.pyplot as plt
# 随机生成数据
data = np.random.randn(1000)
# 绘制直方图
plt.hist(data, bins=30, alpha=0.5, color='blue', edgecolor='black')
# 绘制条形图
categories = ['Category A', 'Category B', 'Category C']
counts = [np.sum(data < 0), np.sum((data >= 0) & (data < 1)), np.sum(data >= 1)]
plt.bar(categories, counts, color='green', alpha=0.5)
plt.show()
```
在这段代码中,我们首先生成了一个1000个随机数的样本数据。然后使用 `plt.hist()` 函数绘制了数据的直方图,其中 `bins=30` 表示将数据分成30个区间。使用 `plt.bar()` 函数绘制了条形图,其中 `categories` 和 `counts` 分别代表分类标签和每个分类下的数据数量。
#### 2.2.2 折线图和散点图的应用场景
折线图和散点图是展示数据趋势和关联的两种常用图形。折线图适用于展示时间序列数据的变化趋势,而散点图则用于探索两个变量之间的关系。
```python
# 生成时间序列数据
x = np.arange(len(data))
y = data
# 绘制折线图
plt.plot(x, y, label='Time Series')
# 绘制散点图
plt.scatter(x, y, color='red', label='Scatter Plot')
# 添加图例
plt.legend()
# 显示图形
plt.show()
```
在这段代码中,我们首先生成了一个表示时间序列的 `x` 数据。然后,我们使用 `plt.plot()` 函数绘制了数据的折线图,其中 `label='Time Series'` 为图形添加了标签。使用 `plt.scatter()` 函数绘制了数据的散点图,其中 `color='red'` 指定了散点的颜色。最后,我们使用 `plt.legend()` 添加了图例,以便区分不同的图形。
### 2.3 图形元素的自定义与优化
#### 2.3.1 标题、标签、图例的定制
在绘制统计图形时,清晰的标题、标签和图例对于解释图形至关重要。在matplotlib中,我们可以使用 `set_title()`, `set_xlabel()`, `set_ylabel()` 和 `legend()` 方法来自定义这些图形元素。
```python
# 继续使用之前绘制散点图的代码
# 设置标题
ax.set_title('Data Trend and Relationship')
# 设置x轴和y轴的标签
ax.set_xlabel('Time Index')
ax.set_ylabel('Values')
# 更新图例的位置
ax.legend(loc='upper left')
# 显示图形
plt.show()
```
在这段代码中,我们使用 `ax.set_title()`, `ax.set_xlabel()`, `ax.set_ylabel()` 方法分别设置了图形的标题、x轴标签和y轴标签。`ax.legend(loc='upper left')` 更新了图例的位置,使其显示在左上角。
#### 2.3.2 颜色、字体和布局的高级设置
除了基本的图形元素定制外,matplotlib还提供了丰富的选项来自定义图形的颜色、字体和整体布局。例如,我们可以调整图形的大小、调整字体样式、设置字体大小、调整颜色等。
```python
plt.figure(figsize=(8, 6)) # 设置图形大小为8x6英寸
# 设置字体样式
plt.rcParams['font.f
```
0
0
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)