【问题标题】:Matplotlib: Display value next to each point on chartMatplotlib:在图表上每个点旁边显示值
【发布时间】:2018-09-09 01:31:59
【问题描述】:

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

点上显示的值为:[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()

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

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

【问题讨论】:

  • 为您的代码添加更多细节,以便您的图形可重现。目前不知道变量根本不好
  • @Bazingaa 我已经编辑了问题。

标签: matplotlib


【解决方案1】:

根据您的价值观,这是使用 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)

输出

【讨论】:

  • 惊人的反应。谢谢!
【解决方案2】:

基于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)

输出:

【讨论】:

    猜你喜欢
    • 2012-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    • 2020-01-16
    • 1970-01-01
    相关资源
    最近更新 更多