当前位置: 首页 > news >正文

python画图|二维动态柱状图输出

【1】引言

在前面的学习过程中,已经探索过二维柱状图和三维柱状图的绘制教程,包括且不限于的文章链接有:

python画图|水平直方图绘制_绘制水平直方图-CSDN博客

python画图|3D bar进阶探索_ax.bar3d-CSDN博客

此外也学习了动态的直线输出和散点图输出:

python画图|曲线动态输出基础教程_python 动态曲线-CSDN博客

python画图|散点图动态输出_python散点图配色-CSDN博客

 在此基础上,很容易启发我们画动态输出的柱状图。

【2】项目设计

开发一个新项目,往往采取类比演绎的方式来提升效率,这里,我们以散点图动态输出为利,将散点图更新为直方图,以实线目标。

首先是引入计算、绘图和动画三大模块:

import matplotlib.pyplot as plt  # 引入画图模块
import numpy as np  # 引入计算模块import matplotlib.animation as animation  # 引入动画模块

然后定义画图和设置自变量:

fig, ax = plt.subplots()  # 定义要画图
x = np.linspace(0, 10, 100)  # 定义自变量

 之后定义一个动画函数,让所有的直方图按顺序输出:

def animate(i):  # 自定义函数ax.bar(x[i], np.sin(x[i]),0.1*abs(np.cos(x[i])))

 这里面的0.1*abs(np.cos(x[i]))代表直方图的宽度,是对正弦函数去绝对值然后缩小10倍。

之后调用函数进行画图:

ani = animation.FuncAnimation(fig, animate,interval=20)  # 调用animation.FuncAnimation()函数画图

最后保存动图和输出图形:

ax.set_title('ani-bar-aixmls') #设置图名
ani.save('ani-bar-aixmls.gif') #保存动图plt.show() #输出图形

获得的动图为:

图1

至此的完整代码为:

import matplotlib.pyplot as plt  # 引入画图模块
import numpy as np  # 引入计算模块import matplotlib.animation as animation  # 引入动画模块fig, ax = plt.subplots()  # 定义要画图
x = np.linspace(0, 10, 100)  # 定义自变量
def animate(i):  # 自定义函数ax.bar(x[i], np.sin(x[i]),0.1*abs(np.cos(x[i])))ani = animation.FuncAnimation(fig, animate,interval=20)  # 调用animation.FuncAnimation()函数画图
ax.set_title('ani-bar-aixmls') #设置图名
ani.save('ani-bar-aixmls.gif') #保存动图plt.show() #输出图形

尝试设计一下颜色,将其按照RGB的形式定义:

ax.bar(x[i], np.sin(x[i]),0.1*abs(np.cos(x[i])),color=(abs(np.sin(x[i])),(np.cos(x[i])**2),x[i]/10))

此时的动态图为:

图2

由图2可见,图形的颜色呈周期渐变趋势。

【3】总结

探索了二维动态柱状图绘制方法,成功编写代码,绘制出动态柱状图。

http://www.lryc.cn/news/458583.html

相关文章:

  • CocosCreator 快速部署 TON 游戏:Web2 游戏如何使用 Ton支付
  • 生信初学者教程(二十八):单细胞数据标准化
  • 【OceanBase诊断调优】—— 错误码 5065 和 5066 的区别
  • Spring Boot RESTful API开发教程
  • <Rust>iced库(0.13.1)学习之番外:如何为窗口添加初始值?
  • Redis:list类型
  • 政府采购方式有哪些,竞争性谈判和竞争性磋商的区别
  • 【JavaScript】移动色块案例 实现一个可以拖动并且在拖动过程中会自动改变颜色的色块(JS 事件监听器)
  • [Linux#62][TCP] 首位长度:封装与分用 | 序号:可靠性原理 | 滑动窗口:流量控制
  • 【中短文】区分神经网络中 表征特征、潜层特征、低秩 概念
  • MySQL8.0环境部署+Navicat17激活教程
  • 每日读则推(十)——Elon Musk‘s speech on self-driving at Tesla‘s annual meeting
  • C++新特性——外部模板
  • 字节跳动青训营开始报名了!
  • 从SQL Server过渡到PostgreSQL:理解模式的差异
  • 刷题 排序算法
  • 【python3】tornado高性能编程
  • 构建高效购物推荐系统:SpringBoot实战
  • docker tar包安装 docker-26.1.4.tgz
  • Github 2024-10-12 Rust开源项目日报 Top10
  • Spring Cloud 微服务架构及其应用:设计、实现与优化
  • Rider + xmake DX12 开发环境
  • 控制台java原生工具打包jar文件
  • MySQL主从同步
  • ansible 学习之变量
  • 【知识科普】Markdown语法内容看这一篇就够了
  • 什么是智能合约?
  • Oracle低代码平台apex介绍
  • 【读书笔记·VLSI电路设计方法解密】问题12:制造MOSFET晶体管的主要工艺步骤是什么
  • 内存分析工具的使用——AddressSanitizer