当前位置: 首页 > 知识库问答 >
问题:

使用样条插值将线绘制为图形中最大值的x和y值[重复]

史承福
2023-03-14

我想画一个图,通过画一条点线回到x轴和y轴,并显示这两个轴的值来突出显示它的局部最大值。

例如,一些数据:

import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import make_interp_spline

x_ = np.array([1, 2.5, 2.7, 8, 3])
y_ = np.array([1, 2, 3, 4, 5, 6])
spline = make_interp_spline(x_, y_)
x = np.linspace(x_.min(), x_.max(), 500)
y = spline(x)

xmax = x[np.argmax(y)]
ymax = y.max()
plt.plot(x, y)
plt.plot(xmax,ymax,'o')
plt.show()

我该怎么做?

提前感谢

共有1个答案

华鹭洋
2023-03-14

一般代码可以,但有两个主要错误:

1-x应进行排序

2-xy的大小应相同

代码的工作版本:

import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import make_interp_spline

x_ = np.array([1, 2.5, 2.7, 3, 8])
y_ = np.array([1, 2, 3, 5, 4])
spline = make_interp_spline(sorted(x_), y_)
x = np.linspace(x_.min(), x_.max(), 500)
y = spline(x)

xmax = x[np.argmax(y)]
ymax = y.max()
plt.plot(x_, y_, 'o')
plt.plot(x, y)
plt.plot(xmax,ymax,'s')

# annotations
plt.axhline(ymax, ls=':', c='k')
plt.axvline(xmax, ls=':', c='k')
plt.text(xmax, ymax*0.95, f'({round(xmax,2)}, {round(ymax,2)})')

plt.show()
 类似资料:
  • 问题内容: 有没有一种简单的方法来获取绘制如下轮廓线的(x,y)值: 问题答案: 查看返回的ContourSet的collections属性。特别是第一个集合的get_paths()方法返回组成每个线段的成对点。 要获取坐标的NumPy数组,请使用属性。

  • 我正在制作一个熊猫柱状图,图中显示了原始计数,但是我想用这些计数的百分比作为一个整体来标注柱状图。我见过很多人使用< code>ax.patches方法来注释,但是我的值与实际条的< code>get_height无关。 这是一些玩具数据。产生的图将是特定类型的单个计数。但是,我想在这个特定的条上添加注释,表示这个特定类型对这个人的姓名的所有类型的百分比总和。 如果您需要更多澄清,请告诉我。

  • 我很难创建一个条形图,其中包含两个不同的y轴和每个x值(类别)的两个条形图。我有不同类型的数据类别(见下文),每个类别我都有两个值,我想并排绘制(和)。但是,每个类别的值相距甚远,这使得类别的条形几乎不可见。因此,我想添加第二个y轴(一个用于,一个用于),以允许在两个类别之间进行比较。 示例数据: 我使用下面的R代码(ggplot2)来创建绘图: 和,但我没有设法将y轴分配给数据类型。 我很高兴每

  • 有人能帮我把我的x记号设置成横条吗。如图所示,条形图与xtick time值不一致。我已经在下面打印了、的数据值以及代码。我已经尝试过这个解决方案,Python MatplotLib将第一个x轴值标记为1(而不是0),,,尽管随后的条形图与x记号一致,但它变为数字1到28。我想要我的图像中的时间段。

  • 问题内容: 我试图做到这一点,但是在执行时,它显示了以下错误: ValueError:太多值无法解包 我要如何解决它,因为我希望在悬停鼠标时添加和注释值。这是我的以下代码: 问题答案: 该错误告诉您返回的单个对象无法解包。因此,您需要删除逗号()。而是将返回的bar容器称为。 您也不能盲目地复制散点图或条形图的其他解决方案。相反,您需要使其适应条形。因此,您需要浏览一下酒吧,并检查其中的哪一个(如

  • 我试图通过一条线性回归线,通过共享相同斜率的单独数据簇。然而,尽管我已经成功地为点本身绘制了不同的颜色,并成功地绘制了这些颜色的图形,但我在线条上的尝试不起作用。 早些时候,我尝试了一个hashset,它通过颜色调用集群,但这会导致行的输入顺序出现问题。 在这次尝试中,我尝试通过一个数字附件链接集群,然后根据该附件调用线路。 代码的第一部分并不是真正相关的,因为我没有在那里更改任何内容,并且该部分