简体   繁体   English

用 matplotlib 显示每条线的最终 y 轴值

[英]Show the final y-axis value of each line with matplotlib

I'm drawing a graph with some lines using matplotlib and I want to display the final y value next to where each line ends on the right hand side like this:我正在使用 matplotlib 绘制一个带有一些线条的图表,我想在每条线在右侧结束的位置旁边显示最终的y值,如下所示:在此处输入图像描述

Any solutions or pointers to the relevant parts of the API? API相关部分的任何解决方案或指针? I'm quite stumped.我很困惑。

I'm using matplotlib 1.0.0 and the pyplot interface, eg pyplot.plot(xs, ys, f, xs_, ys_, f_) .我正在使用 matplotlib 1.0.0 和 pyplot 接口,例如pyplot.plot(xs, ys, f, xs_, ys_, f_)

While there's nothing wrong with Ofri's answer, annotate is intended especially for this purpose:虽然 Ofri 的回答没有错,但annotate专门用于此目的:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(61).astype(np.float)
y1 = np.exp(0.1 * x)
y2 = np.exp(0.09 * x)

plt.plot(x, y1)
plt.plot(x, y2)

for var in (y1, y2):
    plt.annotate('%0.2f' % var.max(), xy=(1, var.max()), xytext=(8, 0), 
                 xycoords=('axes fraction', 'data'), textcoords='offset points')

plt.show()

在此处输入图像描述

This places the text 8 points to the right of the right side of the axis, at the maximum y-value for each plot.这会将文本 8放置在轴右侧的右侧,即每个 plot 的最大 y 值处。 You can also add in arrows, etc. See http://matplotlib.sourceforge.net/users/annotations_guide.html (You can also change the vertical alignment, if you want the text vertically centered on the given y-value. Just specify va='center' .) You can also add in arrows, etc. See http://matplotlib.sourceforge.net/users/annotations_guide.html (You can also change the vertical alignment, if you want the text vertically centered on the given y-value. Just specify va='center' 。)

Also, this doesn't rely on tick locations, so it will work perfectly for log plots, etc. Giving the location of the text in terms of the positions of the axis boundaries and its offset in points has a lot of advantages if you start rescaling the plot, etc.此外,这不依赖于刻度位置,因此它非常适用于日志图等。如果您开始,根据轴边界的位置及其偏移量给出文本的位置有很多优势重新调整 plot 等。

Option 1 - pyplot.text选项 1 - pyplot.text

pyplot.text(x, y, string, fontdict=None, withdash=False, **kwargs)

Option 2 - Use a second axes :选项 2 - 使用第二个轴

second_axes = pyplot.twinx() # create the second axes, sharing x-axis
second_axis.set_yticks([0.2,0.4]) # list of your y values
pyplot.show() # update the figure

Very useful Joe.非常有用的乔。 Only one more detail.只有一个细节。 If the final value isn't a maximun, you can use y[-1].如果最终值不是最大值,则可以使用 y[-1]。 I added a horizontal line to clarify.我添加了一条水平线来澄清。

gbm = np.log(np.cumsum(np.random.randn(10000))+10000)
plt.plot(gbm)
plt.annotate('%0.2f' % gbm[-1], xy=(1, gbm[-1]), xytext=(8, 0), 
             xycoords=('axes fraction', 'data'), textcoords='offset points')
plt.axhline(y=gbm[-1], color='y', linestyle='-.')
plt.show()

Plot with final y-axis value marked. Plot 标记了最终的 y 轴值。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何正确遍历 matplotlib 图的子图以显示每条线的最终 y 轴值? - How do I properly loop through the subplots of a matplotlib figure to show the final y-axis value of each line? 在y轴上添加标签以显示matplotlib中水平线的y值 - Add a label to y-axis to show the value of y for a horizontal line in matplotlib Matplotlib:绘制偏移曲线,每个曲线都有相应的y轴 - Matplotlib: plot offset curves, each with corresponding y-axis 无法在Python Matplotlib中的y轴上显示完整的图形 - Cannot show complete graph on y-axis in Python Matplotlib 如何在时间线图中显示 Matplotlib 中的所有 Y 轴标签? - How to show all Y-Axis Labels in Matplotlib in TimeLine Chart? Matplotlib:跨越4条独立线图的一致Y轴 - Matplotlib : Consistent Y-Axis across 4 Separate Line Plots 如何在matplotlib中制作不同y轴的堆叠折线图? - How to make stacked line chart with different y-axis in matplotlib? Python-Matplotlib:标准化y轴以显示标准差的倍数 - Python - Matplotlib: normalizing y-axis to show multiples of standard deviation Matplotlib - 在动画线图中实现多个 y 轴刻度 - Matplotlib - Implement multiple y-axis scales in animated line graph 带有2个y轴的matplotlib图 - matplotlib diagrams with 2 y-axis
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM