鸢尾花书实践和知识记录[编程1-10可视化]

news2024/9/29 12:01:48

一个人可以被摧毁,但不能被打败。
A man can be destroyed but not defeated
原作者的github

主要内容Matplotlib,Plotly如何绘制线图

文章目录

  • 思维导图
  • 解剖图
    • 代码:图像的要素和标注
  • 使用Matplotlib绘制线图
    • 代码2:绘制正弦和余弦的图像
      • 图像存储格式的说明
    • 代码3子图的绘制
    • plt和ax函数的比较
  • 图片美化
    • Matplotlib的默认设置参数
  • 使用Plotly 绘制线图
  • 探究学习

在这里插入图片描述

思维导图

在这里插入图片描述

解剖图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码:图像的要素和标注

import matplotlib.pyplot as plt
import numpy as np

from matplotlib.patches import Circle
from matplotlib.patheffects import withStroke
from matplotlib.ticker import AutoMinorLocator, MultipleLocator
royal_blue = [0, 20/256, 82/256]


# make the figure

np.random.seed(19680801)

X = np.linspace(0.5, 3.5, 100)
Y1 = 3+np.cos(X)
Y2 = 1+np.cos(1+X/0.75)/2
#均匀分布
Y3 = np.random.uniform(Y1, Y2, len(X))
Python




fig = plt.figure(figsize=(7.5, 7.5))

# 添加坐标轴
ax = fig.add_axes([0.2, 0.17, 0.68, 0.7], aspect=1)

# 设置坐标轴刻度
#主刻度和次刻度
ax.xaxis.set_major_locator(MultipleLocator(1.000))
ax.xaxis.set_minor_locator(AutoMinorLocator(4))
ax.yaxis.set_major_locator(MultipleLocator(1.000))
ax.yaxis.set_minor_locator(AutoMinorLocator(4))
ax.xaxis.set_minor_formatter("{x:.2f}")

# 设置坐标轴范围
ax.set_xlim(0, 4)
ax.set_ylim(0, 4)

# 设置坐标轴刻度样式
ax.tick_params(which='major', width=1.0, length=10, labelsize=14)
ax.tick_params(which='minor', width=1.0, length=5, labelsize=10,
               labelcolor='0.25')

# 添加网格
ax.grid(linestyle="--", linewidth=0.5, color='.25', zorder=-10)

# 添加线条
ax.plot(X, Y1, c='C0', lw=2.5, label="Blue signal", zorder=10)
ax.plot(X, Y2, c='C1', lw=2.5, label="Orange signal")
# 添加标记
ax.plot(X[::3], Y3[::3], linewidth=0, markersize=9,
        marker='s', markerfacecolor='none', markeredgecolor='C4',
        markeredgewidth=2.5)

# 添加标题
ax.set_title("Anatomy of a figure", fontsize=20, verticalalignment='bottom')
# 添加x轴标签
ax.set_xlabel("x Axis label", fontsize=14)
# 添加y轴标签
ax.set_ylabel("y Axis label", fontsize=14)
# 添加图例
ax.legend(loc="upper right", fontsize=14)

# 定义一个注释函数
def annotate(x, y, text, code):
    # 画圆形标记,绘制的位置
    c = Circle((x, y), radius=0.15, clip_on=False, zorder=10, linewidth=2.5,
               edgecolor=royal_blue + [0.6], facecolor='none',
               path_effects=[withStroke(linewidth=7, foreground='white')])
    
    ax.add_artist(c)

    # 使用path_effects作为文本的背景
    # 先绘制path_effects和带有颜色的文本,以便path_effects不会剪切其他文本
    for path_effects in [[withStroke(linewidth=7, foreground='white')], []]:
        color = 'white' if path_effects else royal_blue
        ax.text(x, y-0.2, text, zorder=100,
                ha='center', va='top', weight='bold', color=color,
                style='italic', fontfamily='monospace',
                path_effects=path_effects)

        color = 'white' if path_effects else 'black'
        ax.text(x, y-0.33, code, zorder=100,
                ha='center', va='top', weight='normal', color=color,
                fontfamily='monospace', fontsize='medium',
                path_effects=path_effects)

annotate(3.5, -0.13, "Minor tick label", "ax.xaxis.set_minor_formatter")
annotate(-0.03, 1.0, "Major tick", "ax.yaxis.set_major_locator")
annotate(0.00, 3.75, "Minor tick", "ax.yaxis.set_minor_locator")
annotate(-0.15, 3.00, "Major tick label", "ax.yaxis.set_major_formatter")
annotate(1.68, -0.39, "xlabel", "ax.set_xlabel")
annotate(-0.38, 1.67, "ylabel", "ax.set_ylabel")
annotate(1.52, 4.15, "Title", "ax.set_title")
annotate(1.75, 2.80, "Line", "ax.plot")
annotate(2.25, 1.54, "Markers", "ax.scatter")
annotate(3.00, 3.00, "Grid", "ax.grid")
annotate(3.60, 3.58, "Legend", "ax.legend")
annotate(2.5, 0.55, "Axes", "fig.subplots")
annotate(4, 4.5, "Figure", "plt.figure")
annotate(0.65, 0.01, "x Axis", "ax.xaxis")
annotate(0, 0.36, "y Axis", "ax.yaxis")
annotate(4.0, 0.7, "Spine", "ax.spines")

# frame around figure
fig.patch.set(linewidth=4, edgecolor='0.5')
plt.show()

在这里插入图片描述

使用Matplotlib绘制线图

在这里插入图片描述

代码2:绘制正弦和余弦的图像

# 导入包
import numpy as np
import matplotlib.pyplot as plt

# 生成横轴数据
x_array = np.linspace(0, 2*np.pi, 100)
# 正弦函数数据
sin_y = np.sin(x_array)
# 余弦函数数据
cos_y = np.cos(x_array)
# 设置图片大小
fig, ax = plt.subplots(figsize=(8, 6))

# 绘制正弦和余弦曲线
ax.plot(x_array, sin_y, 
        label='sin', color='b', linewidth=2)
ax.plot(x_array, cos_y, 
        label='cos', color='r', linewidth=2)

# 设置标题、横轴和纵轴标签
ax.set_title('Sine and cosine functions')
ax.set_xlabel('x')
ax.set_ylabel('f(x)')

# 添加图例
ax.legend()

# 设置横轴和纵轴范围
ax.set_xlim(0, 2*np.pi)
ax.set_ylim(-1.5, 1.5)

# 设置横轴标签和刻度标签
x_ticks = np.arange(0, 2*np.pi+np.pi/2, np.pi/2)
x_ticklabels = [r'$0$', r'$\frac{\pi}{2}$', 
                r'$\pi$', r'$\frac{3\pi}{2}$', 
                r'$2\pi$']
ax.set_xticks(x_ticks)
ax.set_xticklabels(x_ticklabels)

# 横纵轴采用相同的scale
ax.set_aspect('equal')
plt.grid()
# 将图片存成SVG格式
plt.savefig('正弦_余弦函数曲线.svg', format='svg')

# 显示图形
plt.show()

在这里插入图片描述
首先定义图像对象
在这里插入图片描述

在这里插入图片描述

图像存储格式的说明

用 matplotlib.pyplot.savefig(),简做 plt.savefig(),保存图片
在这里插入图片描述
后期的美化和说明文字使用python添加成本较高。
在这里插入图片描述

代码3子图的绘制

在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt 
 
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(x, y)
plt.show()

绘制一行两列的子图

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2 * np.pi, 100)
y_sin = np.sin(x)
y_cos = np.cos(x)
# 创建图形对象和子图布局
fig, (ax1, ax2) = plt.subplots(1, 2, 
                  figsize=(10, 4), 
                  sharey=True)

# 在左子图中绘制正弦函数曲线,设置为蓝色
ax1.plot(x, y_sin, color='blue')
ax1.set_title('Sine function')
ax1.set_xlabel('x') 
ax1.set_ylabel('f(x)',
               rotation='horizontal', 
               ha='right') 
ax1.set_xlim(0, 2*np.pi) 
ax1.set_ylim(-1.5, 1.5) 
x_ticks = np.arange(0, 2*np.pi+np.pi/2, np.pi) 
x_ticklabels = [r'$0$', r'$\pi$', r'$2\pi$'] 
ax1.set_xticks(x_ticks) 
ax1.set_xticklabels(x_ticklabels) 
ax1.grid(True)
ax1.set_aspect('equal') 

# 在右子图中绘制余弦函数曲线,设置为红色
ax2.plot(x, y_cos, color='red')
ax2.set_title('Cosine function')
ax2.set_xlabel('x') 
ax2.set_ylabel('f(x)', 
               rotation='horizontal', 
               ha='right') 
ax2.set_xlim(0, 2*np.pi) 
ax2.set_ylim(-1.5, 1.5) 
ax2.set_xticks(x_ticks) 
ax2.set_xticklabels(x_ticklabels) 
ax2.grid(True)
ax2.set_aspect('equal') 

# 调整子图之间的间距
plt.tight_layout()

# 显示图形
plt.show()

在这里插入图片描述

plt和ax函数的比较

在这里插入图片描述

图片美化

在这里插入图片描述
在这里插入图片描述
常用的色谱和颜色
在这里插入图片描述
matplotlib的色彩说明

Matplotlib的默认设置参数

在这里插入图片描述

import matplotlib.pyplot as plt
p = plt.rcParams # 全局配置参数
print(p)
# plt.rcParams 配置参数的当前默认值

在这里插入图片描述
在这里插入图片描述

使用Plotly 绘制线图

# 导入包
import plotly.express as px
import numpy as np

# 生成横轴数据
x = np.linspace(0, 2 * np.pi, 100)

# 生成正弦和余弦曲线数据
y_sin = np.sin(x)
y_cos = np.cos(x)
# 创建图表
fig = px.line(x=x, y=[y_sin, y_cos], 
              labels={'y': 'f(x)', 'x': 'x'})
# 修改图例
fig.data[0].name = 'Sine'
fig.data[1].name = 'Cosine'
# 显示图表
fig.show()

产生的图片是可交互的,可以缩放,查看数值

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

探究学习

在这里插入图片描述

在这个网站的配图进行运行和注释
https://matplotlib.org/stable/plot_types/index.html

主要分类

  • 配对数据
  • 统计分布
  • 网格数据
  • 不规则网格数据
  • 三维和体积数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2176645.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux 默认内核版本更改

随笔记录 目录 1. 背景介绍 2. 解决方法 2.1 查看所有可用版本 2.2 安装指定版本内核 2.3 检查当前内核列表 2.4 检查当前默认内核 2.5 设置新的默认内核 2.6 确认内核是否成功加载 2.7 重启 2.8 删除其他版本内核 1. 背景介绍 linux 一般安装多个内核版本&…

97、配置 VXLAN 不同子网互访 (分布式网关)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、基础配置SW1SW2IGP IS-IS 二、VXLAN1.引入库 总结 前言 一、基础配置 SW1 vlan 10 vlan 20interface GigabitEthernet0/0/1port link-type accessport de…

[Python学习日记-33] Python 中的嵌套函数、匿名函数和高阶函数

[Python学习日记-33] Python 中的嵌套函数、匿名函数和高阶函数 简介 嵌套函数 匿名函数 高阶函数 简介 在 Python 当中函数除了能减少重复代码、扩展性强和易维护外,其实还有挺多不通的玩法的,例如嵌套函数、匿名函数、高阶函数等,它们是…

酒店智能开关的组成与功能

酒店智能开关作为智能家居系统的重要组成部分,其应用日益广泛。本文将深入探讨酒店智能开关的组成部分及其功能特点。 酒店智能开关的组成 酒店智能开关的构成相对复杂,但主要可以归纳为以下几个核心部分: 开关主体:开关主体是智能…

带链的队列,入队,退队,检测带链队列的状态

代码&#xff1a; #include<iostream> using namespace std; template<class T> struct node {T d;node *next;}; template<class T> class linked_Queue {private:node<T> *front;node<T> *rear;public:linked_Queue();void prt_linked_Queue(…

联想电脑怎么开启vt_联想电脑开启vt虚拟化教程(附intel和amd主板开启方法)

最近使用联想电脑的小伙伴们问我&#xff0c;联想电脑怎么开启vt虚拟。大多数可以在Bios中开启vt虚拟化技术&#xff0c;当CPU支持VT-x虚拟化技术&#xff0c;有些电脑会自动开启VT-x虚拟化技术功能。而大部分的电脑则需要在Bios Setup界面中&#xff0c;手动进行设置&#xff…

掌握DFIR报表: 法医专家指南

介绍 在数字安全领域&#xff0c;DFIR&#xff08;数字取证和事件响应&#xff09;是一门重要的学科&#xff0c;体现了调查网络事件和破坏行为所必不可少的方法和实践。作为DFIR的核心&#xff0c;对DFIR报告的重视怎么强调都不为过。这些报告不仅仅是文件&#xff1b;它们是…

每天3分钟,彻底弄懂神经网络的优化器(三)Momentum

前面从最初的SGD开始&#xff0c;介绍SGD的算法细节&#xff0c;以及其在深度神经网络中的劣势&#xff0c;本文引入Momentum算法&#xff0c;解决SGD的一些问题。 1. Momentum算法的提出 动量&#xff08;Momentum&#xff09;方法最初由B.T.Polyak在1964年提出。这一方法被…

IAR全面支持国科环宇AS32X系列RISC-V车规MCU

IAR嵌入式开发解决方案将全面支持国科环宇AS32X系列ASIL-B MCU&#xff0c;共同推动汽车高品质应用的安全开发 中国上海&#xff0c;2024年9月29日 – 全球领先的嵌入式系统开发软件解决方案供应商IAR与北京国科环宇科技股份有限公司&#xff08;以下简称“国科环宇”&#xf…

Rust语言桌面应用开发GTK3 Gtk3-rs Glade

文章目录 GTK-RSGithub官网Rust 教程Rust 环境安装 GTK安装 Gladedemo.glade 文件完整示例 main.rs创建 Rust 项目Cargo.toml 文件main.rs 文件 编译运行GTK主题 GTK-RS gtk-rs 是一个用于在 Rust 编程语言中使用 GTK 图形用户界面工具包的库。GTK 是一个流行的跨平台 GUI 工具…

每日论文7-17MWCL基于IMOS的小vco增益变化的VCO

《Small VCO-Gain Variation Adding a Bias-Shifted Inversion-Mode MOS Varactor》17MWCL 对于PLL来说&#xff0c;其中VCO的调谐增益KVCO越线性&#xff0c;其变化程度ΔKvco越小&#xff0c;对PLL的稳定有较大的好处。这篇文章给了一个很简单朴素而有效的补偿var非线性的方…

Maven 编译和Nexus 构建私有仓库

Java 程序编译 编译流程 C 语言源码编译过程&#xff0c;对于单文件&#xff0c;我们可以使用 gcc 命令直接编译即可&#xff0c;但如果是大型商业项目&#xff0c;源码文件多&#xff0c;存在各种依赖&#xff0c;各种配置路径&#xff0c;各种库的支持等&#xff0c;几乎无法…

C0004.Qt中QComboBox设置下拉列表样式后,下拉列表样式无效的解决办法

问题描述 我们平时在使用Qt Creator对控件QComboBox的样式进行设置后,在运行程序启动界面时,发现设置的样式无效,效果如下: /* 设置下拉菜单框的样式 */ QComboBox QAbstractItemView {border: 1px solid rgb(161,161,161); /* 下拉菜单框的边框样式 */ }/* 设置下拉菜单…

现在转行AI晚不晚,应该怎么做呢?

对于40岁以上的非AI程序员来说&#xff0c;转行进入AI领域虽然可能面临一些挑战&#xff0c;但并非不可实现。凭借你已有的编程经验和技术背景&#xff0c;加上适当的学习策略和实践&#xff0c;你可以成功跨入AI领域。以下是一些针对40岁程序员转行AI的建议&#xff0c;特别是…

GCC使用入门

文章目录 GCC简介单个文件编译过程预处理(Preprocessing)编译(Compilation)汇编(Assembly)链接(Linking) 多文件编译过程头文件搜索路径三种不推荐的方法两种推荐的方法 库文件静态库文件创建和使用静态库链接顺序 动态库文件创建和使用动态库 Warning编译选项调试信息(-g)编译…

快递单号物流跟踪管理快速筛选出已签收单号

看着满屏的单号&#xff0c;是不是感觉眼前一黑要查询到什么时候&#xff1f;别灰心&#xff0c;这不快递批量查询高手来了&#xff01;这神器就是用来查询物流的好帮手。一键筛选已签收件单号&#xff0c;并导出表格。有了它&#xff0c;你也能轻松查询大量的单号物流。一起试…

买前必看,教你挑选适合自己的蓝牙耳机(我早点刷到该多好啊)

无论是运动、通勤&#xff0c;还是休闲娱乐时&#xff0c;蓝牙耳机已经成为我们便捷生活的一部分。那么&#xff0c;市场上这么多款蓝牙耳机&#xff0c;我们究竟该怎么选&#xff1f;耳机挑不对&#xff0c;买了也白费&#xff01;买蓝牙耳机之前要搞清楚耳机的这些参数&#…

【算法业务】关于数据驱动的用户增长思考

这篇内容是多年之前&#xff08;2020年&#xff09;的用户增长项目时自己写的总结&#xff0c;这里做一下对于实践和思考的回顾&#xff0c;便于知识的记录和经验分享&#xff0c;内容涉及用户增长理解、个性化推送系统框架、个性化推送问题建模、推送内容池构建、智能文案生成…

BMT Building Maker Toolset 房屋建筑快速创建工具

BuildingMakerToolset提供了一个用于创建建筑和放置预制件的自定义工作流程。 如果你需要为你的游戏设计一些带室内装饰的建筑,或者你是一名关卡设计师,你想让你的工作流程更有效,这可能是适合你的资产。 该工具集与200多个墙壁、电缆、管道等预制件配对。所有预制件都指定了…

基于NXP LS1046+FPGA的轨道交通3U CPCI多网口解决方案,支持QNX/VXWOKRS/LINUX

Feature Summary Specification Description 处理器 NXP LS1046A at up to 1.4GHz 存储 DDR4&#xff0c; 16GB Emmc&#xff0c;16MB QSPI FLASH 板卡形状 3U标准CPCI板卡 尺寸 160.00 100.00mm 接口 2路2.5GE 2路1GE 1路RS232 1路IRIGB 调试接口 JTAG / COP de…