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

Python画图|极坐标下的散点图动态输出

【1】引言

前序已经学习过散点图输出和极坐标图输出,文章链接包括但不限于下述部分:

python画散点图|scatter()函数小试牛刀(入门级教程)_python ax.scatter-CSDN博客

python画图|极坐标中画散点图_极坐标上的散点图-CSDN博客

【2】自主探索

在此基础上,我自主探索了极坐标下的散点图输出。

相关代码见:

import matplotlib.pyplot as plt #引入画图模块
import numpy as np #引入计算模块import matplotlib.animation as animation #引入动画模块fig = plt.figure() #定义要画图
ax = fig.add_subplot(projection='polar') #定义要画极坐标图
#ax.set_xlim([0, 10])scatters = ax.scatter(0, 2,5) #定义初始散点
x = np.linspace(0, 10,100) #定义自变量def animate(i): #自定义动画函数ax.scatter(x[i], x[i]**2, 12*x[i]) #极坐标中的散点的坐标点(x[i], x[i]**2),散点大小12*x[i]return scatters,ani = animation.FuncAnimation(fig, animate) #输出动画# To save the animation using Pillow as a gif
# writer = animation.PillowWriter(fps=15,
#                                 metadata=dict(artist='Me'),
#                                 bitrate=1800)
ani.save('polar-scatter.gif') #保存动画plt.show() #输出图形

a4c0528892914d50ace08d622d4388be.gif

图1

【3】代码解读

具体的代码书写步骤为:

首先引入画图、计算和动画模块:

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

然后定义画图,确认画极坐标图:

fig = plt.figure() #定义要画图
ax = fig.add_subplot(projection='polar') #定义要画极坐标图

之后给出初始散点和自变量:

scatters = ax.scatter(0, 2,5) #定义初始散点
x = np.linspace(0, 10,60) #定义自变量

然后定义一个动画函数:

def animate(i): #自定义动画函数ax.scatter(x[i], x[i]**2, 120*x[i],cmap='blues_r') #极坐标中的散点的坐标点(x[i], x[i]**2),散点大小12*x[i]return scatters,

最后调用动画模块输出图形:

ani = animation.FuncAnimation(fig, animate) #输出动画# To save the animation using Pillow as a gif
# writer = animation.PillowWriter(fps=15,
#                                 metadata=dict(artist='Me'),
#                                 bitrate=1800)
ani.save('polar-scatter.gif') #保存动画plt.show() #输出图形

【4】代码优化

由于极坐标下,一个完整的圆周对应角度是360度即2π,因此将自变量的值设置为[0,6.28]即可:

x = np.linspace(0, 6.28,100) #定义自变量

然后为了多输出几个图形,定义动画函数为:

def animate(i): #自定义动画函数ax.scatter(x[i],np.cos(x[i])) #弦长输出余弦ax.scatter(x[i], np.sin(x[i])) #弦长输出正弦ax.scatter(x[i],-np.cos(x[i])) #弦长输出余弦取负值return scatters,

此时运行代码的输出图像为:

8ba0fe39c74c41a583dcefee3934ab44.gif

图2

【5】代码完善

给极坐标的动图增加一个图名:

ax.set_title('polar-scatter-aixmls')

6d0dd619f020470ab3614fa0d6a3e7d3.gif

图3

【6】总结

自主探索了极坐标散点动图绘制技巧。

 

 

 

 

 

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

相关文章:

  • 揭开MySQL并发中的“死锁”之谜:从原理到解决方案的深度解析
  • 【论文阅读】Reliable, Adaptable, and Attributable Language Models with Retrieval
  • A-Frame负责人Diego Marcos分享WebXR与开源AI的未来
  • 【STM32-HAL库】火焰传感器(STM32F407ZGT6)(附带工程下载链接)
  • git merge没有生成合并提交
  • 算法题总结(十九)——图论
  • android studio编译错误提示无法下载仓库
  • 基于SpringBoot的时装购物系统【源码】+【论文】
  • 自动化结账测试:使用 Playwright确保电商支付流程的无缝体验【nodejs]
  • 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-25
  • 【读书笔记-《网络是怎样连接的》- 5】Chapter2_4-网卡的工作过程
  • qt QOperatingSystemVersion详解
  • openpnp - 解决“底部相机高级校正成功后, 开机归零时,吸嘴自动校验失败的问题“
  • Python字幕滚动:为视频添加专业级动态效果!
  • Linux 系统中,将网络配置从 DHCP 改为静态 IP的几种方法
  • 【jellyfin】解决Edge 浏览器播放 jellyfin 的 hevc/h265 视频“该客户端与媒体不兼容,服务器未发送兼容的媒体格式”错误
  • 企业管理系统设计思路——毕业论文设计
  • Android 默认去掉URL网络校验,设置不进行网络校验
  • Python | Leetcode Python题解之第515题在每个树行中找最大值
  • Java泛型:类型安全的艺术
  • Redis 淘汰策略 问题
  • 技术成神之路:设计模式(二十二)命令模式
  • facebook账号类型有哪些?
  • Flutter鸿蒙next 中如何实现 WebView【跳、显、适、反】等一些基础问题
  • 机器视觉:9点标定的原理与实现
  • 《深度学习》 了解YOLO基本知识
  • 什么是Kubernetes?K8s基础与工作原理
  • HTML5新增属性
  • 软件开发术语(E开头)---持续更新
  • 多机器人编队避障算法(1)