使用matplotlib显示文本

4 投票
1 回答
5261 浏览
提问于 2025-04-16 20:27

我在使用matplotlib的plt.text()方法时遇到了问题,希望有人能帮我。下面是一个基本的线性回归示例,我想在图上显示一些文字(比如斜率 = )和实际的斜率值:

import csv
import scipy as sp
import scipy.stats
import matplotlib.pyplot as plt

x, y = sp.loadtxt('nums.csv', delimiter=',', usecols=(0,1), unpack=True)
linear_reg = slope, intercept, r_value, p_value, std_err = sp.stats.linregress(x, y)
plt.title('SO Regression Example')
plt.text(2, 30, r'slope=', slope, fontsize=15)
plt.plot(x, y)
plt.show()

上面的代码报了一个错误:AttributeError: 'numpy.float64' object has no attribute 'items'

如果我从第9行中去掉r'slope = 'slope中的任意一个,我的代码就能正常运行。例如,下面这两行都可以正常工作:

plt.text(2, 30, slope, fontsize=15) # 显示:0.82785632403515463

或者

plt.text(2, 30, r'slope =', fontsize=15) # 显示:slope

有没有人知道我该怎么做才能让这个图同时显示这两个内容:(斜率 = 0.82785632403515463)

现在,我是通过使用两行独立的plt.text()来手动调整位置来解决这个问题:

plt.text(2, 30, r'slope=', fontsize=15)
plt.text(7, 30, slope, fontsize=15)

难道没有更简单的方法吗?

1 个回答

4
str='slope'+str(slope)
plt.text(2, 30, str, fontsize=15)

或者直接用 plt.text(2, 30, r'slope='+str(slope), fontsize=15) 这行代码。

撰写回答