使用 Matplotlib 和 TeX 实现均匀间距

2024-07-01

我正在为数学课绘制一些图表,但我无法在绘图图例中正确地获得和平定义的间距。我目前正在使用

\,

对于 TeX 中的单个空间,但会遇到一种情况,其中一个空间比另一个空间稍远,这可能是由于左边的方程占用了多少空间。这是我的代码

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

# 0-1
x = np.linspace(0, 1)
y = np.power(x, 2)
plt.plot(x, y, label=r"$t^2 \,\,\,\,\,\, 0 \leq t \leq 1$")

#1-2
x = [1,2]
y = [1,1]
plt.plot(x, y, label=r"$1 \,\,\,\,\,\,\, 1 < t \leq 2$")

#2-3
x = np.linspace(2, 3)
y = 3-x
plt.plot(x, y, label=r"$3 - t \,\,\,\, 2 < t \leq 3$")


plt.grid()
plt.axis([0,3,0,1.5])
plt.legend(loc='upper right')
plt.show()

这是结果

如何有效地格式化它,无论左侧的像素大小如何,都始终有效?


您当然可以通过访问较低级别的 LaTeX 来改善间距。首先,在绘图的顶部运行:

from matplotlib import rc
rc('text', usetex=True)

使用组合\makebox http://www.personal.ceu.hu/tex/spacebox.htm#makebox and \hfill http://www.personal.ceu.hu/tex/spacebox.htm#hfill您可以填充两个部分之间的空格:

label=r"\makebox[4cm]{$t^2$ \hfill $0 \leq t \leq 1$}"
label=r"\makebox[4cm]{$1$ \hfill $1 < t \leq 2$}"
label=r"\makebox[4cm]{$3 - t$ \hfill $2 < t \leq 3$}"

诚然,这并不完美,但结合了多种\makebox并填充您可以微调您需要的内容。理想情况下,您可以编写一个自定义图例处理程序,它“感知”TeX 的多行块,但我确信这并非易事。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Matplotlib 和 TeX 实现均匀间距 的相关文章

  • pandas.algos._return_false 在 CentOS 上使用 dill.dump_session 导致 PicklingError

    我有一个代码框架 其中涉及使用 dill 转储会话 这曾经工作得很好 直到我开始使用 pandas 以下代码在 CentOS 6 5 版本上引发 PicklingError import pandas import dill dill du
  • 多处理冻结计算机

    我通过使用多处理提高了执行时间 但我不确定 PC 的行为是否正确 它会冻结系统 直到所有进程完成 我使用的是 Windows 7 和 Python 2 7 也许我做错了 这就是我所做的 def do big calculation sub
  • 调用exe中定义的函数

    我需要知道一种从 python 脚本调用 exe 中定义的函数的方法 我知道如何从 py 文件调用整个 exe 除非您的 EXE 是 COM 对象 或者像 dll 那样专门导出某些函数 否则这是不可能的 对于 COM 方法 请查看以下资源
  • Python 内存使用情况

    因此 我有一些代码接收一组文件 将其可以缝合在一起 然后绘制它们 我发布了大部分代码 试图使其更具可读性 如果需要 可以添加更多代码 for paths dirs files in os walk start path for d in d
  • 在 Python 中获取连接的 VPN 名称

    我正在尝试检索已连接的 VPN 的名称 我运行的是 Fedora 23 因此连接在 etc NetworkManager system connections 中得到了很好的枚举 其中一个文件列出了 VPN 配置的每个参数 包括我要查找的
  • 如何在pytorch中使用多个GPU?

    我使用此命令来使用 GPU device torch device cuda 0 if torch cuda is available else cpu 但是 我想使用两个 GPUjupyter 像这样 device torch devic
  • numpy 不规则跨步数组

    引用文档 http docs scipy org doc numpy reference arrays ndarray html internal memory layout of an ndarray关于内存中的 numpy 数组结构 N
  • ModuleNotFoundError:没有名为“discord_slash”的模块[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 I m trying to install a module called discord slash https py
  • 如何在不破坏 DataFrame.append() 的情况下子类化或以其他方式扩展 pandas DataFrame?

    我有一个复杂的对象 我想围绕 pandas DataFrame 构建 我尝试使用子类执行此操作 但是即使在使用时 附加到 DataFrame 也会重新初始化新实例中的所有属性 metadata 按照推荐here https pandas p
  • 无法从 BigQuery 中的工作表查询表

    我正在尝试在 python 中使用 BigQuery 来查询通过工作表生成的表 from google cloud import bigquery Prepare connexion and query bigquery client bi
  • Python 中的一维马哈拉诺比斯距离

    我一直在努力validate我的计算代码马哈拉诺比斯距离写在Python 并仔细检查以比较 OpenCV 中的结果 我的数据点均为 1 维 5 行 x 1 列 In OpenCV C 我成功计算了马哈拉诺比斯距离方面数据点的尺寸为上述尺寸
  • 如何在python中查找文件的mime类型?

    假设您想要将一堆文件保存在某个地方 例如保存在 BLOB 中 假设您想通过网页分发这些文件 并让客户端自动打开正确的应用程序 查看器 假设 浏览器通过 HTTP 响应中的 mime type 内容类型 标头确定要使用哪个应用程序 查看器 基
  • 模拟 default=timezone.now 进行单元测试

    我正在尝试为执行大量日期时间操作的 django 应用程序编写单元测试 我已经安装了mock http www voidspace org uk python mock 给 django 打猴子补丁timezone now为了我的测试 虽然
  • 如何使 Selenium WebDriver 不等待整个页面加载

    我正在使用 python 2 7 和 Selenium webdriver for Firefox 我有一个无法解决或在互联网上找到解决方案的问题 我的任务是打开大约 10k 个网页 adsl 路由器 Web 界面 通过 IP 地址 并上传
  • PDFMiner - 迭代页面并将其转换为文本

    所以我试图从一些 PDF 中获取特定的文本 并且我将 Python 与 PDFMiner 一起使用 但由于 API 发生的更改而遇到了一些问题2013年11月 https github com euske pdfminer api chan
  • Matplotlib 中的月份定位器

    我有这样的情节 我想更改 12 个位置的刻度 以这种格式指示相应的月份 Jan Feb Mar 当我使用 MonthLocator 函数时 刻度线从图中消失 ax plt gca ax set xlim 0 365 ax xaxis set
  • 相当于 C++ 中用于缓冲读取的 python 生成器

    Guido Van Rossum 在此展示了 Python 的简单性article http neopythonic blogspot com 2008 10 sorting million 32 bit integers in 2mb h
  • Pandas:获取重复索引

    给定一个数据帧 我想获取重复的索引 这些索引在列中没有重复的值 并查看哪些值不同 具体来说 我有这个数据框 import pandas as pd wget https www dropbox com s vmimze2g4lt4ud3 a
  • 通过串口从python向Arduino发送数据

    如果在串行端口上读取字符 s 我试图让 Arduino 触发继电器 该字符 s 是由 python 根据从屏幕读取的图像发送的 我的问题是arduino似乎无法从串行端口读取 因为它从不执行if条件 我的猜测是两者之间存在某种死锁 这就是为
  • 将函数应用于数据帧的每一行

    下面有什么更优雅的实现方式 我想应用一个函数 my function到数据帧 其中数据帧的每一行都包含函数的参数 然后我想将函数的输出写回数据帧行 results pd DataFrame for row in input panel it

随机推荐