python - 如何将 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))),))
?
解决方案
我没有使用 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 格式,您可能会发现这很有帮助。
推荐阅读
- sql - 用上限计算 SUM 并按比例乘以 SQL 中的系数
- excel - 运行时错误 '1004: Range 类的 PasteSpecial 方法失败
- r - 在R中自动化数据框宽度
- amazon-web-services - Step 函数跨账户访问 DynamoDB
- javascript - 获取迭代器函数最终值的惯用方法是什么?
- ios - 如何在按钮单击时以编程方式切换选项卡?在 swiftui
- visual-studio-code - Visual Studio Code Love2D 支持扩展检测 love.app 作为目录
- azure-pipelines - 在解决方案中构建两个项目,但只有 1 个进入放置文件夹
- javascript - 获取 div 项的内容
- wordpress - 以编程方式在多个页面中调用多个简码