网络编程
位置:首页>> 网络编程>> 网络编程>> matplotlib基本图形绘制操作实例

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基本图形绘制操作实例

这是因为matplotlib在绘制过程中无法显示中文,需要自己设置。

plt.rcParams['font.sans-serif'] = ['YouYuan']
plt.rcParams['axes.unicode_minus'] = False

加入这些代码后,中文就可以正常显示了

matplotlib基本图形绘制操作实例

我们还可以加入网格 使图像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()

运行后

matplotlib基本图形绘制操作实例

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()

matplotlib基本图形绘制操作实例

(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()

matplotlib基本图形绘制操作实例

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()

matplotlib基本图形绘制操作实例

但以上案例是组距相同的情况

实际生活往往有许多组距不相同的情况

这时候往往用条形图来展现组距不相同的情况

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()

matplotlib基本图形绘制操作实例

来源:https://juejin.cn/post/7173114307561914381

0
投稿

猜你喜欢

  • 简介目前PHP实现web socket 都是使用框架集成来实现,比如hyperf,swoft,或者是安装swoole 扩展来实现websoc
  • 许多 Microsoft 的编程语言,如 Visual Basic、VBScript 和 Jscript,都提供集合(collection)
  • MySQL出错代码列表:1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败1008:数据库不存在,删除数据库
  • 介绍:SQL Server 2008变更数据捕获SQL Server 2008的CDC函数读取激活了CDC的每个表所关联的事务日志来记录系统
  • 问: 如果数据表中有时间字段,现在要迁移到其他时区的服务器上,该如何处理呢?答:在高版本的mysqldump中,新增了一个选项:--tz-u
  • 我想大家都有一些开了80端口的肉 * ,如果是国内的出于安全就不要往下看了,如果不不妨往下看一下,小弟献丑了,以求抛砖引玉。在肉鸡上放网站最麻
  • 背景:pony是公司的首席体验官、首席产品经理。这次在产品峰会上pony将自己平时经验的积累与大家交流,体验较细。这次分享研发管理部,设计中
  • 随着CSS3越来越热,CSS3动画也逐渐受到大家的关注。这次有幸修改淘宝网全站页头,小小地应用了下(详见http://www.taobao.
  •   ASP日期和时间函数我们经常会用到,本文列出了12个常用的asp日期和时间函数的语法及用法以作备忘!1.Now Now() 取
  • 面对不断成长的用户,跟随用户的脚步齐步向前,做引起共鸣的改变,去除低龄化的设计,用成熟稳重的心态面对用户。QQBanner自2006 年推出
  • 这些CSS Selector在平时写页面的时候用地不多,只在JavaScript库、Firefox插件、iPhone页面里有过接触。推荐大家
  • 我们经常会遇到这样的问题你还在为你的MySQL命令模式下,前面的提示信息还是:mysql>,那么我们如何更改mysql命令下提示信息呢
  • 信息图表设计(Inforgraphic Design),是信息设计(Information Design)学科的一个分支,它兴起于20世纪末
  • 目录本文目标如何使用本教程正则表达式到底是什么?入门测试正则表达式元字符字符转义重复字符类反义替换分组后向引用零宽断言负向零宽断言注释贪婪与
  • asp之家注:防止表单重复提交的方法,在客户端其实很容易实现,只要使用js让用户第一次点击提交按钮后,把提交按钮设置为disabled,这样
  • 大家知道,Microsoft为了更好地预防恶意用户和攻击者的攻击,在默认情况下,没有将 IIS6.0 安装到 Windows Server
  • 运行代码框<html><META HTTP-EQUIV="Content-Type" content=
  • 因为我们现在的前端框架做性能优化,为了找到各个组件及框架的具体解析耗时,需要在框架中嵌入一个耗时测试工具,性能测试跟不同的计算机硬件配置有很
  • 在oracle中有很多关于日期的函数,如:1、add_months()用于从一个日期值增加或减少一些月份 date_value:=add_m
手机版 网络编程 asp之家 www.aspxhome.com