在Matplotlib图上写数字值
用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))