在Matplotlib图上写数字值

64 投票
3 回答
185736 浏览
提问于 2025-04-16 19:11

用Matplotlib能不能在图上显示每个点的数值呢?

比如说,如果我有:

x = numpy.range(0,10)
y = numpy.array([5,3,4,2,7,5,4,6,3,2])
pyplot.plot(x,y)

我该怎么在图上显示y值呢?(比如在(0,5)这个点附近显示一个5,在(1,3)这个点附近显示一个3,等等。)

3 个回答

1

现在在柱状图上显示数值的方法是使用 plt.text() 这个函数,具体的代码示例如下:

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(10)
y = np.array([5,3,4,2,7,5,4,6,3,2])
#for modifying figsize
fig, ax = plt.subplots(figisize=(8,12))
ax.bar(x,y)
for i, j in zip(x,y):
    ax.text(i,j, str(j), ha='center', va='bottom')
plt.xlabel('x')
plt.ylabel('y')
plt.show()

希望这对你有帮助。

33

使用 pyplot.text() 方法(记得先导入 matplotlib.pyplot,可以用 import matplotlib.pyplot as plt

import matplotlib.pyplot as plt

x=[1,2,3]
y=[9,8,7]

plt.plot(x,y)
for a,b in zip(x, y): 
    plt.text(a, b, str(b))
plt.show()
95

你可以使用 annotate 命令在你想要的任何 x 和 y 值上放置文本注释。为了让注释正好放在数据点上,你可以这样做:

import numpy
from matplotlib import pyplot

x = numpy.arange(10)
y = numpy.array([5,3,4,2,7,5,4,6,3,2])

fig = pyplot.figure()
ax = fig.add_subplot(111)
ax.set_ylim(0,10)
pyplot.plot(x,y)
for i,j in zip(x,y):
    ax.annotate(str(j),xy=(i,j))

pyplot.show()

如果你想让注释稍微偏移一点,可以把 annotate 的那一行改成这样:

ax.annotate(str(j),xy=(i,j+0.5))

撰写回答