matplotlib 在Python中向图标题/图例添加输入变量

taor4pac  于 2022-11-24  发布在  Python
关注(0)|答案(3)|浏览(343)

我想在绘图标题/图例/注解文本中显示用于绘制某个函数的参数的当前值。作为一个简单的例子,让我们以一条直线为例:

import numpy
import matplotlib.pyplot as plt

def line(m,c):
   x = numpy.linspace(0,1)
   y = m*x+c
   plt.plot(x,y)
   plt.text(0.1, 2.8, "The gradient is" *the current m-value should go here*)
   plt.show()

print line(1.0, 2.0)

在这个例子中,我希望我的文本说“The gradient is 1.0”,但我不确定语法是什么。此外,我如何包括下面的第二个(和更多)参数,使它读起来:
“坡度为1.0
截距为2.0”。

huwehgph

huwehgph1#

将字符串格式与.format()方法一起使用:

plt.text(0.1, 2.8, "The gradient is {}, the intercept is {}".format(m, c))

其中mc是要替换的变量。
Python 3.6+ 中,如果你在字符串前面加上一个f,表示格式化字符串文字,你可以直接写这样的变量:

f"the gradient is {m}, the intercept is {c}"
x6492ojm

x6492ojm2#

在python 3.6+中,你可以在字符串前加上前缀f,并将变量放在大括号中。

message = f"The slope is {m}"
plt.text(message)

(by的方式,* 梯度 * 通常被称为 * 斜率 * 时,指的是单变量线性方程)

ctrmrzij

ctrmrzij3#

其他的答案对我的代码不起作用,但是对它的修改起作用了。如下所示:
显示y = m*x + c以对数格式打印在图上。

a1 = coefs[0] # variable 1
a2 = coefs[1] # variable 2

message = f"log(L/Lo) = {a1} * log(M/Mo) + {a2}"

# Define axes
left = 0.01
width = 0.9
bottom  = 0.01
height = 0.9
right = left + width
top = bottom + height
ax = plt.gca()

# Transform axes
ax.set_transform(ax.transAxes)

# Define text
ax.text(0.5 * (left + right), 0.5 * (bottom + top), message,
        horizontalalignment='center',
        verticalalignment='center',
        size= 10,
        color='r',
        transform=ax.transAxes)

plt.show()

使用@https://pythonguides.com/add-text-to-plot-matplotlib/中的代码

相关问题