Matplotlib基础入门--数据分析三大件完结

Python数据分析三大件基础入门已经跟新完毕

前言

  • Matplotlib 是python 的一个绘图库,提供了直方图、散点图......等图像的画法
  • 本文将介绍Matplotlib绘图的基本操作,想要熟练使用需要不断实战

文章目录

Matplotlib基础步骤

python 复制代码
import matplotlib.pyplot as plt
#设置字体
from pylab import mpl
mpl.rcParams["font.sans-serif"] = ["SimHei"]

"""
1、创建画布
    plt.figure(figsize=(), dpi=)
    figsize: 指定长度
    dpi: 图像的清晰度
    返回flg对象

2、绘制图像
    以折线图为例
    plt.plot(x, y)
3、显示图像
    plt.show()
"""

例子:折线图绘制与显示

python 复制代码
#1、创建画布
plt.figure(figsize=(10,10), dpi=100)
#2、绘制折线图
plt.plot([1,2,3,4,5,6,7,8], [1,2,3,4,5,6,7,8])
#3、显示图像
plt.show()


基础绘图功能

折线图

案例:画出城市11点到12点1小时内每分钟的温度折线图,范围:15~18度

1.1、准备数据并画出初始折线图

python 复制代码
import matplotlib.pyplot as plt
import random

#数据
x = range(50)
y_shanghai = [random.uniform(15,18) for i in x]  #生成50个 15~18中间的数字
print(y_shanghai)
#1、创建画布
plt.figure(figsize=(20,8),dpi=80)

#2、绘制折线图
plt.plot(x, y_shanghai)

#3、显示图像
plt.show()
y_shanghai:随机数显示
[16.875817833161456, 15.451008116552151, 17.58067075895153, 17.288801706428366, 15.200932586506742, 16.909753257480574, 16.480645292862373, 17.42294691433753, 16.05638787307683, 15.474114004023923, 15.728478813481193, 17.832324581551454, 15.76244866525853, 16.72710315835741, 16.26421137400754, 17.727771939033705, 17.12830280854327, 15.803368544334655, 17.46081769393601, 17.97550957499392, 17.31322639092533, 15.46695162014346, 16.76494328781358, 15.786037685150003, 16.67695939202865, 17.984011492175945, 16.57571973389307, 17.290330688708703, 17.194655619506378, 17.997727061048515, 15.472782111662703, 16.387287685179523, 15.5249822661221, 17.405731776976634, 17.647349574547782, 15.38360790790629, 16.503231567098897, 16.699982734626243, 17.00959412214185, 17.002731294604832, 16.741321181338556, 16.10071468001527, 15.846096283640717, 17.222802062622463, 16.072327302102522, 16.57900024740193, 15.259950695978013, 16.74506786820688, 16.06341403220067, 17.815735953522566]

1.2、添加自定义刻度

1、构建x刻度和标签

x_ticks_label = ["11点{}分".format(i) for i in x]

构建y刻度

y_ticks = range(40)

2、修改

plt.xticks(x[::5], x_ticks_label[::5])

plt.yticks(y_ticks[::5])

python 复制代码
#构建x刻度和标签
x_ticks_label = ["11点{}分".format(i) for i in x]
#构建y刻度
y_ticks = range(40)

#修改
plt.xticks(x[::5], x_ticks_label[::5])
plt.yticks(y_ticks[::5])

1.3、中文乱码

python 复制代码
#设置字体
from pylab import mpl
mpl.rcParams["font.sans-serif"] = ["SimHei"]

1.4、加网格

python 复制代码
plt.grid(True, linestyle='--', alpha=0.5)

1.5、添加描述信息

python 复制代码
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("11:00~12:00之间温度变化", fontsize=20)

1.6、保存图像

python 复制代码
plt.savefig("test1.png")
#注意:plt.show()会释放figure资源,所以必须在显示前保存,显示后保存也只能保存空照片

1.7、总代码

python 复制代码
import matplotlib.pyplot as plt
import random
from pylab import mpl

#设置中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False

#0.准备数据
x = range(50)
y_shanghai = [random.uniform(15,18) for i in x]      #列表推导式

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

#2、绘制图像
plt.plot(x, y_shanghai)

#2.1、添加刻度
#添加标签
x_ticks_label = ["11点{}分".format(i) for i in x]
y_ticks = range(50)

#刻度显示
plt.xticks(x[::5], x_ticks_label[::5])
plt.yticks(y_ticks[::5])

#2.2、添加网格
plt.grid(True, linestyle="--", alpha=0.5)

#2.3、添加描述信息
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("中午11~12点间温度变化", fontsize=20)

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

#3、图像显示
plt.show()


2、一个坐标显示多个图像

图像可以设置风格、颜色---->现用现查

案例

python 复制代码
#0.准备数据
x = range(60) 
y_shanghai = [random.uniform(15,18) for i in x]    #随机数的使用
y_beijing = [random.uniform(1,3) for i in x]

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

#2. 绘制图像
plt.plot(x, y_shanghai, label="上海")
plt.plot(x, y_beijing, label="北京", color="r", linestyle="--")

#2.1 添加x、y标签
#构造x,y刻度标签
x_ticks = ["11点{}分".format(i) for i in x]
y_ticks = range(60)

#刻度显示
plt.xticks(x[::5], x_ticks[::5])
plt.yticks(y_ticks[::5])

#2.2 添加网格
plt.grid(True, linestyle="--", alpha=0.5)

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

#2.4 保存图像
plt.savefig("./test2.png")

#2.5 添加图例         有时候显示不出来label需要设置图例
plt.legend(loc=0)

#3. 图像显示
plt.show()


3、多个坐标显示

可以通过subplots函数实现(旧的版本中有subplot,使⽤起来不⽅便),推荐subplots函数
matplotlib.pyplot.subplots(nrows=1, ncols=1, **fig_kw) 创建⼀个带有多个axes(坐标系/绘图区)的图

解释:

nrows, ncols: 设置有几行几列数据

fig: 图对象

axes:返回相应数量的坐标系

设置标题等方式不同:

set_xticks

set_yticks

set_xlabel

set_ylabel

plt.函数名() 相当于面向过程,axes相当于面向对象画图方法

python 复制代码
#0 准备数据
x = range(60)
y_shanghai = [random.uniform(5,10) for i in x]
y_beijing = [random.uniform(1,5) for i in x]

#1 创建画布
flg, axes = plt.subplots(nrows=1,ncols=2, figsize=(20,80),dpi=100)   #创建一个一行两列的子图

# 2 绘制图像
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(10)

# 刻度显示
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])

# 添加网格
axes[0].grid(True, linestyle="--", alpha=0.5)
axes[1].grid(True, linestyle="--", alpha=0.5)

#添加描述信息
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)

# 图像保存
plt.savefig("./test3.png")

# 添加图例
axes[0].legend(loc=0)
axes[1].legend(loc=0)

#3 图像显示
plt.show()


4、plot其他图像绘制

python 复制代码
import numpy as np

#0 准备数据
x = np.linspace(-10, 10, 1000)
y = np.sin(x)

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

#2 绘制函数图像
plt.plot(x, y)

#3 显示
plt.show()


5、其他

现用现查即可

python 复制代码
#散点图
plt.scatter()
#柱状图
plt.bar()
#直方图
plt.his()
#饼图
plt.pie
相关推荐
AI原吾1 小时前
掌握Python-uinput:打造你的输入设备控制大师
开发语言·python·apython-uinput
毕设木哥1 小时前
25届计算机专业毕设选题推荐-基于python的二手电子设备交易平台【源码+文档+讲解】
开发语言·python·计算机·django·毕业设计·课程设计·毕设
weixin_455446171 小时前
Python学习的主要知识框架
开发语言·python·学习
D11_1 小时前
Pandas缺失值处理
python·机器学习·数据分析·numpy·pandas
花生了什么树~.2 小时前
python基础知识(四)--if语句,for\while循环
python
IT毕设梦工厂3 小时前
计算机毕业设计选题推荐-在线拍卖系统-Java/Python项目实战
java·spring boot·python·django·毕业设计·源码·课程设计
luthane3 小时前
python 实现average mean平均数算法
开发语言·python·算法
码农研究僧4 小时前
Flask 实现用户登录功能的完整示例:前端与后端整合(附Demo)
python·flask·用户登录
Ylucius4 小时前
动态语言? 静态语言? ------区别何在?java,js,c,c++,python分给是静态or动态语言?
java·c语言·javascript·c++·python·学习
凡人的AI工具箱4 小时前
AI教你学Python 第11天 : 局部变量与全局变量
开发语言·人工智能·后端·python