首页 > 其他分享 >Matplotlib的基本使用

Matplotlib的基本使用

时间:2022-08-23 22:33:07浏览次数:192  
标签:基本 显示 plt Matplotlib label 使用 折线图 import 绘制

1.Matplotlib

1.什么是Matplotlib
  1. Matplotlib:专门用于开发2D图表,包括3D图表。
2.简单的实现画折线图
  1. 导入matplotlib.pyplot模块
import matplotlib.pyplot as plt
  1. 创建画布,使用plt.figure()方法
plt.figure(figsize=(), dpi=)
    figsize:指定图的宽高
    dpi:图像的清晰度(分辨率)
    返回Figure类型的对象
  1. 绘制图像
// 比如说绘制折线图
plt.plot(x, y)
  1. 显示图像
plt.show()
3.Matplotlib图像结构

image.png

4.基础绘图功能
  1. 给图形添加辅助功能
    1. 添加自定义x刻度:使用plt.xticks(ticks, labels, **kwargs)函数,labels:要显示的刻度值
    2. 添加自定义y刻度:使用plt.yticks(y, **kwargs)函数,y:要显示的刻度值
    3. 添加网格显示:plt.grid(True, linestyle='--', alpha=0.5)
      1. 第一个参数指定是否显示网格线
      2. linestyle指定网格线的风格
      3. color指定网格线的颜色
    4. 添加描述信息
      1. 添加x轴描述信息:plt.xlabel(str)
      2. 添加y轴描述信息:plt.ylabel(str)
      3. 添加标题:plt.title(str, fontsize)
    5. 图像的保存:plt.savefig(指定保存的路径)
  2. 案例:绘制某城市11点到12点1小时内每分钟的温度变化折线图,温度范围在15度~18度
from pylab import mpl
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False

import matplotlib.pyplot as plt
import random
# [0,60)的一组整数
x = range(60)
# uniform函数在[15,18)获取一个随机数字
# [random.uniform(15,18) for i in x]是一个列表生成式
y = [random.uniform(15,18) for i in x]

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

# 绘制折线图
plt.plot(x, y)
# 构造x轴刻度标签
x_ticks_label = ["11点{}分".format(i) for i in x]
# 构造y轴刻度
y_ticks_label = range(40)
# 修改x,y轴的坐标的刻度显示
plt.xticks(x[::5],x_ticks_label[::5])
plt.yticks(y_ticks_label[::5])
plt.grid(True, linestyle='--', alpha=0.2, color = 'r')
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("中午11点0分到12点之间的温度变化图示", fontsize=30)

plt.savefig("./test.png")
plt.show()

image.png
3. 中文显示不出来以及坐标轴的部分字符无法正常显示的问题的解决
1. 解决方案1:
# 在Python脚本中动态设置matplotlibrc from pylab import mpl # 设置显示中文字体 mpl.rcParams["font.sans-serif"] = ["SimHei"] # 设置正常显示符号 mpl.rcParams["axes.unicode_minus"] = False
2. 解决方案2:修改配置文件
4. 在一个坐标系中绘制多个图像
1. 调用多次plot函数
# 在上图中再添加一座城市的温度变化,温度在1~3度 y_beijing = [random.uniform(1,3) for i in x] # 绘制折线图 plt.plot(x, y_beijing, color = 'g', linestyle='--')
2. 图形风格的设置
image.png
5. 图例的显示
1. 在plt.plot()函数中设置label
2. 调用plt.legend(loc)显示图例
1. loc的取值
image.png

# 图例的显示示例
# 绘制折线图
plt.plot(x, y_beijing, color = 'g', linestyle='--',label="北京")
plt.legend(loc="best")
  1. 上面完整代码:
from pylab import mpl
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False

import matplotlib.pyplot as plt
import random

# [0,60)的一组整数
x = range(60)
# uniform函数在[15,18)获取一个随机数字
# [random.uniform(15,18) for i in x]是一个列表生成式
y = [random.uniform(15,18) for i in x]
y_beijing = [random.uniform(1,3) for i in x]

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

# 绘制折线图
plt.plot(x, y_beijing, color = 'g', linestyle='--',label="北京")
plt.plot(x, y,label="上海")

# 构造x轴刻度标签
x_ticks_label = ["11点{}分".format(i) for i in x]
# 构造y轴刻度
y_ticks_label = range(40)
# 修改x,y轴的坐标的刻度显示
plt.xticks(x[::5],x_ticks_label[::5])
plt.yticks(y_ticks_label[::5])

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

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

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

# 添加图例
plt.legend(loc="best")

# 图像显示
plt.show()

image.png

  1. 同一个图的不同坐标系中显示图像:使用plt.subplots函数
5.常见图形的绘制

Matplotlib能够绘制折线图、散点图、柱状图、直方图、饼图。

  1. 折线图:使用plt.plot(x,y)函数来绘制折线图。
  2. 散点图:使用plt.scatter(x, y)函数来绘制折线图
# 房屋面积和房屋价格的关系
import matplotlib.pyplot as plt
x = [225.98, 247.07, 253.14, 457.85, 241.58, 301.01,  20.67, 288.64,
       163.56, 120.06, 207.83, 342.75, 147.9 ,  53.06, 224.72,  29.51,
        21.61, 483.21, 245.25, 399.25, 343.35]
y = [196.63, 203.88, 210.75, 372.74, 202.41, 247.61,  24.9 , 239.34,
       140.32, 104.15, 176.84, 288.23, 128.79,  49.64, 191.74,  33.1 ,
        30.74, 400.02, 205.35, 330.64, 283.45]
# 创建画布
plt.figure(figsize=(20,20), dpi=100)
# 绘制散点图
plt.scatter(x,y)
# 显示图像
plt.show()
  1. 柱状图:使用plt.bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)函数来绘制柱状图
    1. 函数参数x:需要传递的数据
    2. width:柱状图的宽度
    3. align:每个柱状图的位置对齐方式
    4. color:选择柱状图的颜色
import matplotlib.pyplot as plt
# 电影名字
movie_name = ['雷神3:诸神黄昏','正义联盟','东方快车谋杀案','寻梦环游记','全球风暴','降魔传','追捕','七十七天','密战','狂兽','其它']
# 横坐标
print(len(movie_name))
x = range(len(movie_name))
print(x)
# 票房数据
y = [73853,57767,22354,15969,14839,8725,8716,8318,7916,6764,52222]
# 1.创建画布
plt.figure(figsize=(20, 8), dpi=100)

# 2.绘制柱状图
plt.bar(x, y, width=0.5, color=['b','r','g','y','c','m','y','k','c','g','b'])

# 2.1b修改x轴的刻度显示
plt.xticks(x, movie_name)

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

# 2.3 添加标题
plt.title("电影票房收入对比")

# 3.显示图像
plt.show()
  1. 直方图:它的横轴是数据的幅度,纵轴是对应于各个幅度数据出现的次数,直方图没有负数。使用plt.hist(x,bins=None)来绘制直方图
    1. x:需要传递的数据
    2. bins:组距
  2. 饼图:用于表示不同分类的占比情况,通过弧度大小来对比各种分类。使用plt.pie(x, labels=,autopct=,colors)函数来绘制饼图
    1. x:数量
    2. labels:每部分名称
    3. autopct:占比显示指定%1.2f%%
    4. colors:每部分颜色

画图参考

标签:基本,显示,plt,Matplotlib,label,使用,折线图,import,绘制
From: https://www.cnblogs.com/wenzhihua/p/16618107.html

相关文章