Matplotlib:在图表上的每个点旁边显示值

Lul*_*ulu 3 matplotlib

是否可以在图表上显示每个点旁边的值:

图表

点上显示的值是:[7, 57, 121, 192, 123, 240, 546]

values = list(map(lambda x: x[0], result)) #[7, 57, 121, 192, 123, 240, 546]
labels = list(map(lambda x: x[1], result)) #['1950s', '1960s', '1970s', '1980s', '1990s', '2000s', '2010s']

plt.plot(labels, values, 'bo')
plt.show()
Run Code Online (Sandbox Code Playgroud)

这是我当前用于此图表的代码。

我想知道图表上显示的每个点值,目前我只能根据 y 轴预测值。

She*_*ore 10

根据您的价值观,这是使用的一种解决方案 plt.text

fig = plt.figure()
ax = fig.add_subplot(111)
values = [7, 57, 121, 192, 123, 240, 546]
labels = ['1950s', '1960s', '1970s', '1980s', '1990s', '2000s', '2010s']

plt.plot(range(len(labels)), values, 'bo') # Plotting data
plt.xticks(range(len(labels)), labels) # Redefining x-axis labels

for i, v in enumerate(values):
    ax.text(i, v+25, "%d" %v, ha="center")
plt.ylim(-10, 595)
Run Code Online (Sandbox Code Playgroud)

输出

在此处输入图片说明


Pie*_*uis 8

解决方案基于plt.annotate

fig = plt.figure()
ax = fig.add_subplot(111)
values = [7, 57, 121, 192, 123, 240, 546]
labels = ['1950s', '1960s', '1970s', '1980s', '1990s', '2000s', '2010s']

plt.plot(range(len(labels)), values, 'bo') # Plotting data
plt.xticks(range(len(labels)), labels) # Redefining x-axis labels

for i, v in enumerate(values):
    ax.annotate(str(v), xy=(i,v), xytext=(-7,7), textcoords='offset points')
plt.ylim(-10, 595)
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述