首页 > 解决方案 > 如何将 np.poly1d 对象转换为字符串值?

问题描述

我正在尝试在我的图表图例中插入一个 np.poly1d 对象作为字符串。

import numpy as np
import matplotlib
matplotlib.rcParams['text.usetex'] = True
import matplotlib.pyplot as plt
import pandas as pd
#set directory
df = pd.read_excel('1.xlsx','ChicagoPerThousand')
#set plot
x = df['Fires']
y = df['Thefts']

z = np.polyfit(x, y, 1)
p = np.poly1d(z)
plt.scatter(x, y)
line1 = plt.plot(x, p(x), "r--")

#set labels
plt.xlabel('Fires')
plt.ylabel('Thefts')
plt.title('Chicago Fires vs Thefts')
plt.legend((line1),('{}'.format(p),))
plt.show()

我得到错误:

ValueError: cannot convert float NaN to integer

<Figure size 432x288 with 1 Axes>

当我跑步时,repr(p)我得到'poly1d([ 1.313456 , 16.99515723])'str(p)给我' \n1.313 x + 17'

如何将其转换为可以插入图例的字符串?

编辑:我还尝试了以下方法:

import numpy as np
import matplotlib
matplotlib.rcParams['text.usetex'] = True
import matplotlib.pyplot as plt
import pandas as pd
#set directory
df = pd.read_excel('1.xlsx','ChicagoPerThousand')
#set plot
x = df['Fires']
y = df['Thefts']

z = np.polyfit(x, y, 1)
p = np.poly1d(z)
plt.scatter(x, y)
line1 = plt.plot(x, p(x), "r--")

#set labels
plt.xlabel('Fires')
plt.ylabel('Thefts')
plt.title('Chicago Fires vs Thefts')
plt.legend((line1),('{}'.format(print(np.poly1d(p))),))
plt.show()

我得到了错误

runfile('C:/Users/M/Desktop/1.py', wdir='C:/Users/M/Desktop')
  File "C:/Users/M/Desktop/1.py", line 22
    plt.legend((line1),('{}'.format(print(np.poly1d(p))),))
                                        ^
SyntaxError: invalid syntax

此外,我想让字符串用 LaTex 呈现。我会这样做:

plt.legend((line1),('${}$'.format(print(np.poly1d(p))),))

?

标签: pythonnumpymatplotlibsympy

解决方案


我没有使用 LaTex,但我正在使用这个最小的代码示例将 poly1d 类型转换为字符串并正常显示:

import numpy as np
# matplotlib.rcParams['text.usetex'] = True
import matplotlib.pyplot as plt

x = range(0,10)
p = np.poly1d([1.313, 17])
line1 = plt.plot(x, p(x), "r--")

#set labels
plt.xlabel('Fires')
plt.ylabel('Thefts')
plt.title('Chicago Fires vs Thefts')
plt.legend((line1),('{}'.format(p),))
plt.show()

使用此代码是否仍然出现相同的错误?在这台机器上安装 LaTeX 后,我会尝试用它来更新我的答案。

至于多项式的 LaTex 格式,您可能会发现很有帮助。


推荐阅读