python – 在Matplotlib中使用连字符或减号符号与与Latex的兼容性
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 在Matplotlib中使用连字符或减号符号与与Latex的兼容性,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1929字,纯文字阅读大概需要3分钟。
内容图文
![python – 在Matplotlib中使用连字符或减号符号与与Latex的兼容性](/upload/InfoBanner/zyjiaocheng/805/e4c4fe48664248ba93f7b0c12797daeb.jpg)
我遇到的问题是使用matplotlib.pyplot创建的pgf输出连字符而不是减号,而Latex无法解释.
我试图使用找到的解决方案here,但是它会在刻度标签中将数字从整数更改为浮点数(即2000变为2000.0).我正在寻找一个解决方案,修复标志,但保持在pyplot中的默认格式.
有任何想法吗?以下示例.
myplot.py
import matplotlib.pyplot as plt
from matplotlib.ticker import FuncFormatter
def math_formatter(x, pos):
return "$%s$" % x
plt.figure()
plt.plot([1,2,3,4,5,6,7],[-1,-2,3,4,5,6,7])
axis = plt.gca()
axis.xaxis.set_major_formatter(FuncFormatter(math_formatter))
axis.yaxis.set_major_formatter(FuncFormatter(math_formatter))
plt.show()
mylatex.tex
\documentclass{article}
\usepackage{pgf}
\begin{document}
\begin{figure}[H]
\centering
\input{myplot.pgf}
\end{figure}
\end{document}
如果您在没有formatter参数的情况下进行绘图,则会将标准格式设置为int,但latex将不会将连字符识别为减号.如果使用formatter参数,则所有int都将成为浮点数.
我正在寻找一个解决方案,其中连字符被更改为减号,但无论参数(int或float或其他),刻度将表现为pyplot的默认行为(连字符是减号).
解决方法:
默认情况下,Matplotlib的最新版本使用排版“正确”(这是有争议的)unicode minus signs (U+2212)来表示负数,而不是ASCII hyphens.在我的系统中,ASCII连字符在Latex中没有任何问题被解释,但是unicode减号不是默认的.
使用带有表达式的FuncFormatter返回’%i’%x,如您所建议的那样,here将减号转换为连字符,并且是Latex兼容性的有效解决方案.除了这个解决方案之外,下面还有两个可供选择的解决方案,可以通过更“全系统”的方法解决这个问题.
matplotlib:使用连字符而不是减号
可以使用ASCII连字符(默认情况下由Latex正确解释)代替unicode减号来表示matplotlib中的负数.根据文档(http://matplotlib.org/1.3.0/examples/api/unicode_minus.html),可以通过执行以下操作来执行此操作:
matplotlib.rcParams['axes.unicode_minus'] = False
Latex:使用unicode减号
如果您更喜欢使用减号而不是连字符,可以在Latex文档的前言中添加:
\usepackage[utf8]{inputenc}
\DeclareUnicodeCharacter{2212}{$-$}
然后乳胶应识别字符U 2212,并用减号正确表达负数.以下是我使用Latex进行炒作(顶部)和减号(底部)的输出:
内容总结
以上是互联网集市为您收集整理的python – 在Matplotlib中使用连字符或减号符号与与Latex的兼容性全部内容,希望文章能够帮你解决python – 在Matplotlib中使用连字符或减号符号与与Latex的兼容性所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。