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

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

一个人可以被摧毁,但不能被打败。
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 npfrom matplotlib.patches import Circle
from matplotlib.patheffects import withStroke
from matplotlib.ticker import AutoMinorLocator, MultipleLocator
royal_blue = [0, 20/256, 82/256]# make the figurenp.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))
Pythonfig = 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_blueax.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 pltx = 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

主要分类

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

相关文章:

  • CSS——边框线条动画效果
  • Spring Boot 进阶-Spring Boot的全局异常处理机制详解
  • Linux之实战命令19:tac应用实例(五十三)
  • 输入输出返回值
  • 深圳某局联想SR850服务器黄灯 不开机维修
  • gcc选项-fno-access-control 使用
  • JAVA-内部类和匿名内部类
  • 【微服务即时通讯系统】——etcd一致性键值存储系统、etcd的介绍、etcd的安装、etcd使用和功能测试
  • 【初阶数据结构】排序——选择排序
  • 使用lodash库实现防抖和节流
  • 进程的那些事--实现shell
  • 云计算中过等保三级需要的网络安全设备及详细讲解
  • 深度学习框架的选择:深入比较PyTorch与TensorFlow
  • Stable Diffusion ControlNet 的 control model(控制模型)
  • C语言 | Leetcode C语言题解之第442题数组中重复的数据
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • Angular 2 DI - IoC DI - 1
  • Angular 4.x 动态创建组件
  • angular2 简述
  • angular组件开发
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • CentOS7简单部署NFS
  • create-react-app项目添加less配置
  • dva中组件的懒加载
  • java中的hashCode
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • PHP 7 修改了什么呢 -- 2
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 服务器从安装到部署全过程(二)
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 聚簇索引和非聚簇索引
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 使用docker-compose进行多节点部署
  • 小程序 setData 学问多
  • 译自由幺半群
  • 云大使推广中的常见热门问题
  • 自定义函数
  • MPAndroidChart 教程:Y轴 YAxis
  • python最赚钱的4个方向,你最心动的是哪个?
  • raise 与 raise ... from 的区别
  • 选择阿里云数据库HBase版十大理由
  • #etcd#安装时出错
  • (1)Hilt的基本概念和使用
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (LeetCode 49)Anagrams
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (二)linux使用docker容器运行mysql
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (转)Google的Objective-C编码规范
  • ***详解账号泄露:全球约1亿用户已泄露
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .NET Core使用NPOI导出复杂,美观的Excel详解