matplotlib基本图形绘制操作实例
作者:YiiiiiiQ 发布时间:2023-07-14 18:18:01
标签:matplotlib,绘图
matplotlib
matplotlib是最流行的python底层绘图库,接下来就由小编为大家介绍一些关于matplotlib的一些基本图形的绘制操作。这些操作可以将你的数据更加直观的呈现在你的面前。
首先要使用Import导入pyplot库并设置一个别名plt
from matplotlib import pyplot as plt
1.折线图
以下实例绘制气温曲线。(气温是依靠numpy中随机数产生的,因此要导入numpy)
import numpy as np
import random
a = [np.random.randint(20, 35) for i in range(120)]
x = np.arange(0, 120)
fig = plt.figure(figsize=(20, 8), dpi=80) # 设置图形大小和图形分辨率
plt.plot(x, a) #调用plot绘制图形 将x轴坐标和对应的y轴的点传入
# 调整x轴的刻度
_x = list(x)
_xtick_labels = ['10点{}分'.format(i) for i in range(60)]
_xtick_labels += ['11点{}分'.format(i) for i in range(60)]
plt.xticks(_x[::3], _xtick_labels[::3], rotation=45) # rotation表示x轴标签旋转度数
# 添加描述信息
plt.xlabel('时间')
plt.ylabel('温度 单位(C)')
plt.title('10点-12点每分钟的气温变化')
plt.show()
运行后发现中文字体无法显示。
这是因为matplotlib在绘制过程中无法显示中文,需要自己设置。
plt.rcParams['font.sans-serif'] = ['YouYuan']
plt.rcParams['axes.unicode_minus'] = False
加入这些代码后,中文就可以正常显示了
我们还可以加入网格 使图像y轴对应的值更加清楚
gitd()语法格式
matplotlib.pyplot.grid(b=None, which='major',axis='both)
b,which,axis 都是可选的操作
只要在代码末行添加以下一行代码即可
plt.grid()
2.散点图
(使用scatter方法绘制散点图)
from numpy as np
import random
a = np.random.randint(6, 25, size=(31,))
a = list(a)
b = np.random.randint(12, 23, size=(31,))
# 设置字体
plt.rcParams['font.sans-serif'] = ['YouYuan']
plt.rcParams['axes.unicode_minus'] = False
x1 = np.arange(1, 32)
x2 = np.arange(40, 71)
# 使用plt.scatter()绘制散点图
plt.scatter(x1, a, label='三月', s=20, color='orange')
plt.scatter(x2, b, label='四月',s=10, color='red')
# label表示不同颜色点的标签,s是点的大小,color设置点的颜色
# 设置x轴刻度
_x = list(x1) + list(x2)
_xtick_labels = ['三月{}日'.format(i) for i in x1]
_xtick_labels += ['四月{}日'.format(i-39) for i in x2]
plt.xticks(_x[::3], _xtick_labels[::3], rotation=45)
plt.xlabel('时间')
plt.legend()
plt.ylabel('温度')
plt.show()
运行后
3.条形图
(使用bar或者barh方法绘制) (1).竖着的条形图
a = ['猫', '狗', '蛇', '大象', '兔子', '马', '驴', '斑马', '猎豹', '豺狼']
b = [32.4, 23.3, 232, 2423, 232, 2332, 123, 132, 213, 132]
_x = list(range(len(a)))
plt.rcParams['font.sans-serif'] = ['YouYuan']
plt.rcParams['axes.unicode_minus'] = False
# 设置图形大小
plt.figure(figsize=(20, 8), dpi=80)
# 竖着的条形图 使用bar函数
# width表示柱形宽距
plt.bar(_x, b, width=0.3)
plt.xticks(_x, a)
plt.xlabel('动物种类')
plt.ylabel('动物数量')
plt.show()
(2).横着的条形图
a = ['猫', '狗', '蛇', '大象', '兔子', '马', '驴', '斑马', '猎豹', '豺狼']
b = [32.4, 23.3, 232, 2423, 232, 2332, 123, 132, 213, 132]
_x = list(range(len(a)))
plt.rcParams['font.sans-serif'] = ['YouYuan']
plt.rcParams['axes.unicode_minus'] = False
# 设置图形大小
plt.figure(figsize=(20, 15), dpi=80)
# 横着的条形图 使用barh函数 注意柱形宽度要使用height
plt.barh(_x, b, height=0.3, color='orange')
plt.yticks(_x, a)
plt.ylabel('动物种类')
plt.xlabel('动物数量')
# alpha可以调节网格颜色深浅
plt.grid(alpha=0.3)
plt.show()
4.直方图
(使用hist方法)
在传入数据之后往往要以以下方式分组
组数:将数据分组 当数据在100个之内 一般分为5-12组
组距: 每个小组端点的距离
组数 = 极差/组距 = (max() - min()) or numpy.plp()// bin_width
以下案例为电影时长分布直方图
a = np.random.randint(90, 150, size=(250,))
print(a)
plt.figure(figsize=(20, 10), dpi=100)
bin_width = 3 # 设置组距
num_bins = int((max(a) - min(a)) // bin_width) # 分组
plt.xticks(list(range(min(a), max(a) + bin_width, bin_width)))
plt.hist(a, num_bins) # 传入需要统计的数据 以及组数
plt.show()
但以上案例是组距相同的情况
实际生活往往有许多组距不相同的情况
这时候往往用条形图来展现组距不相同的情况
a = [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 60, 90]
b = [5, 5, 5, 5, 5, 5, 5, 5, 5, 15, 30, 60]
c = [836, 2737, 3723, 3926, 3596, 1438, 3273, 642, 824, 613, 215, 47]
plt.figure(figsize=(20, 10), dpi=100)
plt.bar(range(len(a)), c, width=1)
_x = [i-0.5 for i in range(13)]
_xtick_labels = a + [150] # + [150] 使得条形图能显示90,150之间的数据
plt.xticks(_x, _xtick_labels, )
plt.grid(alpha=0.3)
plt.show()
来源:https://juejin.cn/post/7173114307561914381


猜你喜欢
- 这本入门手册是否合适你?我只想告诉你我非常喜欢这本书。我对Microsoft Access的经验足以让我跳过这本傻瓜系列教材,但是实际情况是
- 这是份总结,有不恰达的地方欢迎一同讨论联系方式 : 龙藏 longzang@taobao.com点击这里全幅围观或者点下面大图去 slide
- 微信链接分享给好友时能够自定义标题、简介和logo,现将ThinkPHP5集成JS-SDK实现微信自定义分享功能的过程整理成文。Jssdk类
- 要是XHTML与CSS能面向对象。。太阳应该从北边升起了。但是,凡事都应该带着OO的思想来看问题,也勉强可以凑数拉。其实,早在零几年就有人提
- 程序调用远端服务,为了确保可用性最好在使用前进行健康检测,将异常的服务排除。#!/usr/bin/perl#use strict;use I
- 目标在本节中,将学习根据立体图像创建深度图基础在上一节中,看到了对极约束和其他相关术语等基本概念。如果有两个场景相同的图像,则可以通过直观的
- if语句用来表示某种可能的情况,并如何处理该情况。if语句可以用来表示一种可能性、两种可能性或者多种可能性。1 一种可能性单个的if语句表示
- RateLimit 限流中间件为什么需要限流中间件在大数据量高并发访问时,经常会出现服务或接口面对大量的请求而导致数据库崩溃的情况,甚至引发
- 无法装载DLL Microsoft原因: 126(找不到指定的模块)。 U890帐套引入提示:“无法装载 DLL Microsoft提示您请
- 一.GO程序目录结构在GOPATH目录下的结构--bin(存放编译后生成的可执行文)|----hello.exe(可执行文件)--pkg(存
- 在项目中遇到了个json数据需要解析,利用Python脚本尝试分享给大家如下:import osimport pandas as pdimp
- 先打开安装程序。 选择对应的系统版本,我是64位,所以选了X64。  
- 进行深度学习时,对图像进行预处理的过程是非常重要的,使用pytorch或者TensorFlow时需要对图像进行预处理以及展示来观看处理效果,
- 在数据库应用,我们经常要用到唯一编号,以标识记录。在MySQL中可通过数据列的AUTO_INCREMENT属性来自动生成。MySQL支持多种
- 1、pylint是什么? Pylint 是一个 Python 代码分析工具,它分析 Python 代码中的错误,查找不符合代码风格标准(Py
- 下载好所需程序1.Selenium简介Selenium是一个用于Web应用程序测试的工具,直接运行在浏览器中,就像真正的用户在操作一样。2.
- 前言我们在开发应用是经常会需要用到一些数据的存储,存储的方式有多种,使用数据库是一种比较受大家欢迎的方式。但是对于一些小型的应用,如一些移动
- 前言在编程过程中,我们经常会用到与时间和日期相关的各种需求,下面来介绍 Go 语言中有关时间的一些基本用法。时间类型time.Time 类型
- 本文实例讲述了Python实现带参数的用户验证功能装饰器。分享给大家供大家参考,具体如下:user_list = [ {'
- 现在大家都在讨论Web2.0 ,大家都在搞用户行为前端设计,现在注册一个ID一般只需要几秒钟,站长期望其产生高价值的UGC,形成一个只需要审