Python---Matplotlib

文章目录

  • 1.什么是matplotlib?
  • 2.实现一个简单的matplotlib绘图
  • 3.matplotlib图像结构
  • 4.matplotlib基础绘图
      • 多个坐标系显示— plt.subplots(面向对象的画图方法)
  • 5.常见图形种类

1.什么是matplotlib?

Matplotlib是一个用于绘制数据可视化图形的Python库。它是一个广泛使用的数据可视化工具,可用于创建各种类型的静态、动态和交互式图形,从简单的折线图到复杂的3D图形都可以轻松实现。
Python---Matplotlib_第1张图片
可视化是在整个数据挖掘的关键辅助工具,可以清晰的理解数据,从而调整我们的分析方法。能将数据进行可视化,更直观的呈现,使数据更加客观、更具说服力。

matplotlib可以使用pip命令进行安装

pip install matplotlib

2.实现一个简单的matplotlib绘图

import matplotlib.pyplot as plt
# x,y轴
x=[1,2,3,4,5,6,7]
y=[10,9,8,11,12,9,8]
# 创建画布
plt.figure(figsize=(20,6),dpi=100)

# 绘制折线图
plt.plot(x,y)

# 显示绘图
plt.show()

Python---Matplotlib_第2张图片

3.matplotlib图像结构

Python---Matplotlib_第3张图片

4.matplotlib基础绘图

使用matplotlib完成基础绘图,以折线图为例
需求:画出某城市11点到12点1小时内每分钟的温度变化折线图,温度范围在15度~18度

import matplotlib.pyplot as plt
import random
from pylab import mpl

# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]

# x轴的数据为0到59,此处使用了range方法来生成一个整数序列 
x=range(60) 
# y轴的数据
y=[random.uniform(15,18) for i in x]
y2=[random.uniform(7,9) for i in x]

# 添加自定义x,y刻度
x_ticks = ["11点{}分".format(i) for i in x]
y_ticks = [0,5,10,15,20,25,30]


# 创建画布
plt.figure(figsize=(20,10),dpi=100)

# 添加网格显示
plt.grid(True,linestyle='--',alpha=0.8)

# 添加描述信息
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("中午11点到12点之间的温度变化如图所示",fontsize=20)

# 绘制折线图
plt.plot(x,y,label="上海")
plt.plot(x,y2,label="北京")

# 修改x轴y轴的刻度显示
plt.xticks(x[::5],x_ticks[::5])
plt.yticks(y_ticks)

# 保存图片
plt.savefig("./test.png")

# 显示图例
plt.legend(loc="best")
# 显示
plt.show()

Python---Matplotlib_第4张图片

注意:
1.当random.uniform(a, b)与for循环结合使用时,它表示在给定的范围内生成多个随机浮点数,并通过循环遍历这些生成的随机数。
2.plt.show()会释放figure资源,如果在显示图像之后保存图片将只能保存空图片。

多个坐标系显示— plt.subplots(面向对象的画图方法)

需求:将北京和上海的天气图显示在同一个图的不同坐标系当中,效果如下:
Python---Matplotlib_第5张图片
在Matplotlib中,subplots()函数用于创建一个图形和一个包含多个子图(axes)的网格。它提供了一种方便的方式在一个图形中创建多个图表。该函数返回图形和一个axes数组,你可以使用这些axes对象来绘制你的数据。

fig, ax = plt.subplots(nrows, ncols, **kwargs)
以下是各个参数的说明:
nrows:表示你要创建的子图的行数。
ncols:表示你要创建的子图的列数。
**kwargs:附加的关键字参数,用于自定义图形和axes的属性。
fig:图形对象,表示整个图形,可用于设置整个图形的属性,比如图形大小、背景颜色等。
ax:一个axes对象的数组,表示子图。你可以使用这些axes对象来绘制数据和设置各个子图的属性。

代码:

# 0.准备数据
x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x]
y_beijing = [random.uniform(1, 5) for i in x]
# 1.创建画布
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(20, 8), dpi=100)
# 2.绘制图像
# plt.plot(x, y_shanghai, label="上海")
# plt.plot(x, y_beijing, color="r", linestyle="--", label="北京")
axes[0].plot(x, y_shanghai, label="上海")
axes[1].plot(x, y_beijing, color="r", linestyle="--", label="北京")
# 2.1 添加x,y轴刻度
# 构造x,y轴刻度标签
x_ticks_label = ["11点{}分".format(i) for i in x]
y_ticks = range(40)
# 刻度显示
# plt.xticks(x[::5], x_ticks_label[::5])
# plt.yticks(y_ticks[::5])
axes[0].set_xticks(x[::5])
axes[0].set_yticks(y_ticks[::5])
axes[0].set_xticklabels(x_ticks_label[::5])
axes[1].set_xticks(x[::5])
axes[1].set_yticks(y_ticks[::5])
axes[1].set_xticklabels(x_ticks_label[::5])
# 2.2 添加网格显示
# plt.grid(True, linestyle="--", alpha=0.5)
axes[0].grid(True, linestyle="--", alpha=0.5)
axes[1].grid(True, linestyle="--", alpha=0.5)
# 2.3 添加描述信息
# plt.xlabel("时间")
# plt.ylabel("温度")
# plt.title("中午11点--12点某城市温度变化图", fontsize=20)
axes[0].set_xlabel("时间")
axes[0].set_ylabel("温度")
axes[0].set_title("中午11点--12点某城市温度变化图", fontsize=20)
axes[1].set_xlabel("时间")
axes[1].set_ylabel("温度")
axes[1].set_title("中午11点--12点某城市温度变化图", fontsize=20)
# # 2.4 图像保存
plt.savefig("./test.png")
# # 2.5 添加图例
# plt.legend(loc=0)
axes[0].legend(loc=0)
axes[1].legend(loc=0)
# 3.图像显示
plt.show()

5.常见图形种类

1.折线图:plt.plot(x,y)
2.散点图:plt.scatter(x,y)
3.柱状图:plt.bar(x, width, align=‘center’, **kwargs)

Parameters: x : 需要传递的数据
width : 柱状图的宽度
align : 每个柱状图的位置对齐方式 {‘center’,‘edge’}, optional, default: ‘center’
**kwargs : color:选择柱状图的颜色

4.直方图:plt.hist(x, bins=None)

Parameters: x : 需要传递的数据 bins : 组距

5.饼图:plt.pie(x, labels=,autopct=,colors)

Parameters: x:数量,自动算百分比
labels:每部分名称
autopct:占比显示指定%1.2f%%
colors:每部分颜色

你可能感兴趣的:(python,python,matplotlib,信息可视化)