1
我想在matplotlib分段表达这样的传奇节写:如何在Matplotlib中编写分段函数乳胶代码?
\[f(x) = \left\{
\begin{array}{lr}
x^2 & : x < 0\\
x^3 & : x \ge 0
\end{array}
\right.
\]
问题是Matplotlib不承认\开始\结束\等等。 谢谢
我想在matplotlib分段表达这样的传奇节写:如何在Matplotlib中编写分段函数乳胶代码?
\[f(x) = \left\{
\begin{array}{lr}
x^2 & : x < 0\\
x^3 & : x \ge 0
\end{array}
\right.
\]
问题是Matplotlib不承认\开始\结束\等等。 谢谢
好的,这里是解决方案。它包括加载乳胶mathsymbols包。它假设你已经在PC中安装了所需的乳胶包。在
代码的更多信息:
#/usr/bin/env python3
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import rcParams
rcParams['text.latex.unicode'] = True
rcParams['text.usetex'] = True
rcParams['text.latex.preamble'] = '\usepackage{amsthm}', '\usepackage{amsmath}', '\usepackage{amssymb}',
'\usepackage{amsfonts}', '\usepackage[T1]{fontenc}', '\usepackage[utf8]{inputenc}, \usepackage{multicol}'
rcParams['legend.handleheight'] = 3.0
#This fixes the legend line be placed at same height that text legend
def f(x):
return np.piecewise(x, [x < 2.0, x > 2.0], [lambda x: x ** 2.0, lambda x: 4.0])
fig, ax = plt.subplots()
x = np.linspace(-5.0, 5.0, 1000)
ax.axis([x[0], x[-1], x[0], x[-1]])
ax.spines['left'].set_position('center')
ax.spines['right'].set_color('none')
ax.spines['bottom'].set_position('center')
ax.spines['top'].set_color('none')
ax.spines['left']
ax.spines['bottom']
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ticks = []
for i in range(int(x[0]), int(x[-1] + 1), 1):
ticks.append(i)
ticks.remove(0)
ax.set_xticks(ticks)
ax.set_yticks(ticks)
ax.plot(x, f(x), 'b-', 2, 4, 'wo', markeredgecolor='b',
markerfacecolor='w', lw=2.0)
tlegend = r'$f(x)=\left\{\begin{array}{lr} x^2 & : x<2\\ 4 & : x>2\end{array}\right\}$'
ax.legend([tlegend], loc='lower right')
ax.set_title(ur'$Función\; A\; Trozos$') # If you use accents put ur option.
ax.grid('on')
plt.show()
图像:
如果有人知道如何改进下面的代码将受到欢迎:
rcParams['legend.handleheight'] = 3.0
#This fixes the legend line be placed at same height that text legend
这可能是除了'mathtex'的基本实现之外,您将不得不将工作导出为完整的'LaTeX'。看看'usetex' rcparam。关闭我的头顶,添加'text.usetex = True'到你的rcparam文件应该可以工作。 – tacaswell
它不起作用,因为在乳胶模式下不接受空格或换行符号,如\;或\\ – Tobal
@tcaswell这确实是有效的LaTeX。在'\ left'和'\ right'之间有'数组'环境,这意味着'\ left'和'\ right'命令之间没有换行符。这在LaTeX中排版简单的条件函数并不罕见。 – hooy