首页 > 其他分享 >matplotlib注释指南

matplotlib注释指南

时间:2024-12-15 11:59:11浏览次数:10  
标签:指南 plt matplotlib 注释 ax np import sin

本笔记参考:

matplotlib Plotting Cookbook by Alexandre Devert

Plot types — Matplotlib 3.9.3 documentation

(尝试记录并不断完善matplotlib的使用方法笔记,为后面使用提供参考。)

标题

标题可以使用plt.title()实现,标题支持latex公式,不过需要安装late(完整的latex安装超过7个G,且大致需要一小时左右才能安装完毕。推荐使用miktex,这个安装包很小,需要用到包是其会自动下载。注意,安装miktex后latex文档编译显示其需要Pear,具体请参考网上其他内容。)使用latex公式时与文档中写法类似——公式写在美元符号之间,但要注意\需要使用\\来实现,也可以通过r标记,具体参考python字符串的内容。下面两种写法等价:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)**2

plt.plot(x, y)
plt.title(r'Sine Plot $\sin^2(x)$')
plt.show()

也可以使用ax.set_title()实现

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)**2

fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('Sine Plot $\\sin^2(x)$')
plt.show()

坐标轴标签

设置坐标轴的标签同样可以使用两种不同的方式完成(参考我的另一篇笔记,关于Matplotlib Apis的)。

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)**2

plt.plot(x, y)
plt.xlabel('x label')
plt.ylabel('y label')
plt.title(r'Sine Plot $\sin^2(x)$')
plt.show()
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)**2

fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('Sine Plot $\\sin^2(x)$')
ax.set_xlabel('x label')
ax.set_ylabel('y label')
plt.show()

文本

文本可以使用plt.text()或者ax.text()实现(可参考另一篇关于api的笔记)。但需要注意,该函数中直接使用中文字符串会报错,需要进行一些设置。text函数还支持一个bbox参数(可选参数),该参数需要传入一个字典,来定义边界框的颜色等。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib

# 设置matplotlib的字体为一个支持中文的字体,例如SimHei(黑体)
matplotlib.rcParams['font.sans-serif'] = ['SimHei']  # 用黑体显示中文
matplotlib.rcParams['axes.unicode_minus'] = False  # 正常显示负号

x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)**2

box = {
    'facecolor': 'b',
    'edgecolor': 'm',
    'boxstyle': 'round'
}

plt.plot(x, y)
plt.xlabel('x label')
plt.ylabel('y label')
plt.title(r'Sine Plot $\sin^2(x)$')
plt.text(3,0.6,'这是文本',verticalalignment='center',bbox=box)
plt.show()
import numpy as np
import matplotlib.pyplot as plt
import matplotlib

# 设置matplotlib的字体为一个支持中文的字体,例如SimHei(黑体)
matplotlib.rcParams['font.sans-serif'] = ['SimHei']  # 用黑体显示中文
matplotlib.rcParams['axes.unicode_minus'] = False  # 正常显示负号

x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)**2

box = {
    'facecolor': 'b',
    'edgecolor': 'm',
    'boxstyle': 'round'
}

fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xlabel('x label')
ax.set_ylabel('y label')
ax.set_title('Sine Plot $\\sin^2(x)$')
ax.text(3,0.6,'这是文本',verticalalignment='center',bbox=box)
plt.show()

箭头

箭头可以使用plt.annotate()和ax.annotate()实现,如下:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib

# 设置matplotlib的字体为一个支持中文的字体,例如SimHei(黑体)
matplotlib.rcParams['font.sans-serif'] = ['SimHei']  # 用黑体显示中文
matplotlib.rcParams['axes.unicode_minus'] = False  # 正常显示负号

x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)**2

arrow_p = {
    'facecolor': 'b',
    'edgecolor': 'm',
    'arrowstyle': 'fancy',
}

plt.plot(x, y)
plt.xlabel('x label')
plt.ylabel('y label')
plt.title(r'Sine Plot $\sin^2(x)$')
plt.annotate('箭头',xy=(3,0.6),xytext=(3,0.5),arrowprops=arrow_p)
plt.show()
import numpy as np
import matplotlib.pyplot as plt
import matplotlib

# 设置matplotlib的字体为一个支持中文的字体,例如SimHei(黑体)
matplotlib.rcParams['font.sans-serif'] = ['SimHei']  # 用黑体显示中文
matplotlib.rcParams['axes.unicode_minus'] = False  # 正常显示负号

x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)**2
arrow_p = {
    'facecolor': 'b',
    'edgecolor': 'm',
    'arrowstyle': 'fancy',
}

fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xlabel('x label')
ax.set_ylabel('y label')
ax.set_title('Sine Plot $\\sin^2(x)$')
ax.annotate('箭头',xy=(3,0.6),xytext=(3,0.5),arrowprops=arrow_p)
plt.show()

图例

图例通过legend()函数实现(两种接口均可,下面给出plt接口的绘图方式)。图例的位置有参数loc控制。

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)**2
y_1 = np.sin(x)

plt.plot(x, y,label=r'$\sin^2 x$')
plt.plot(x, y_1,label=r'$\sin x$')
plt.legend(loc='lower left')
plt.show()

网格

网格由grid()实现,通过参数lw,ls,c等可选参数可以进行更细致的控制。

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)**2
y_1 = np.sin(x)

plt.plot(x, y,label=r'$\sin^2 x$')
plt.plot(x, y_1,label=r'$\sin x$')
plt.legend(loc='lower left')
plt.grid(True)
plt.show()

线条

这部分目前我并不太熟悉具体操作方法,这里引用参考书中的一个例子:

import matplotlib.pyplot as plt

N = 20

for i in range(N):
    plt.gca().add_line(plt.Line2D([0,i],[N-i,0]))

plt.grid(True)
plt.axis('scaled')
plt.show()

标签:指南,plt,matplotlib,注释,ax,np,import,sin
From: https://blog.csdn.net/Jay_Franklin/article/details/144431453

相关文章

  • 【C++指南】类和对象(七):友元
           ......
  • 大一新生的蓝桥杯备考指南
    大一是打基础的黄金时期,选择在明年4月参加蓝桥杯正当其时。让我们从基础知识、学习规划和备考策略三个维度,详细谈谈如何准备这场含金量颇高的程序设计大赛。你已经学完CPrimerPlus前九章,这是个不错的起点。接下来的章节包含了指针、动态内存分配、文件操作等重要知识点。这......
  • 亚马逊跟卖选品避坑指南:跟卖模式和侵权检测
    刚入行的亚马逊小白想要做跟卖?连什么是跟卖都没搞懂?跟卖有哪几种模式?哪些链接适合跟卖?跟卖需要注意什么?什么是跟卖?亚马逊跟卖就是原卖家做了一个listing,然后你也可以去卖这个产品,但是你不需要去编写listing,而是和别的卖家共享这个listing,大家都可以去卖,只需要你的价格低一......
  • 库房管理系统开发指南(Python)
    一、引言库房管理系统是现代企业物流管理的重要组成部分,它能够提高库存管理的效率,减少库存成本,并优化资源分配。本文将详细介绍如何使用Python编写一个简单的库房管理系统,包括开发思想、开发流程以及详细的代码示例。二、开发思想需求分析:库存物品的增删改查。库存数量的统......
  • Redis 可视化工具 - Another Redis Desktop Manager 安装指南
    Redis可视化工具-AnotherRedisDesktopManager安装指南概述AnotherRedisDesktopManager是一个开源的跨平台Redis客户端,提供简洁易用的图形用户界面(GUI),方便用户管理和操作Redis数据库。它支持多种操作,如查看、编辑、删除Redis数据,以及执行各种命令等。界......
  • 【产品经理修炼之道】-返利管理系统建设指南
    对存在多供应商供货或多客户分销的企业而言,返利系统的建设有助于支持业务发展。那么,返利系统究竟该怎么建设呢?这篇文章里,作者结合相关项目,总结并分享了他的返利系统建设经验,一起来看看吧。引子返利作为供应商在商业活动开拓新市场、挖掘存量市场潜力,激励经销商的销售策略,返利......
  • 通过RAG技术处理半结构化数据:深入解析与实用指南
    引言在现代数据处理领域,半结构化数据以其独特的混合文本和表格格式(如PDF文件)成为一种常见的数据类型。然而,如何有效地挖掘这些数据中的信息却是一个挑战。本文介绍了一种利用RAG(检索增强生成)技术处理半结构化数据的实用方法,帮助开发者更好地解析和利用这些数据类型。主要......
  • React 与 Stylelint:提升CSS质量,保持代码风格一致性的指南
    前言在前端开发中,维护一致且高质量的CSS代码对于项目的长期可维护性和团队协作至关重要。Stylelint作为一款强大的CSS代码检查工具,在确保代码质量方面发挥了重要作用。本教程将详细介绍如何在React项目中集成和使用Stylelint,通过这一过程,我们将能够提升代码的一致......
  • 织梦网站联系我们的修改,织梦CMS联系信息修改指南
    修改织梦CMS网站中的“联系我们”页面通常涉及编辑模板文件和内容。以下是详细的步骤:登录后台管理系统:使用管理员账号登录织梦CMS的后台管理系统。进入单页文档管理:进入“内容管理”->“单页文档管理”。编辑联系我们的页面:找到“联系我们”页面,点击“编辑”按......
  • 从小白到入门,写给程序员的LLM学习指南
    年初的时候,我第一次接触了ChatGPT,在被深深震撼之后,我意识到一个新的时代正在来临,作为程序员的我有了从未有过的危机感,在海量的信息里浸泡了几周后,作为程序员的我们需要大幅更新自己的技能栈,之后我便开始了更新技能栈的践行。经过过去几个月的学习,我逐渐度过了不知所措的阶......