首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何生成具有不同长度x和y的图

如何生成具有不同长度x和y的图
EN

Stack Overflow用户
提问于 2022-05-25 18:35:45
回答 1查看 405关注 0票数 0

我试图制作一个Python应用程序,在用户输入数据之后显示一个图形,但问题是y_arrayx_array没有相同的维度。当我运行程序时,会引发以下错误:

ValueError: x and y must have same first dimension, but have shapes () and ()

如何绘制不同长度的X轴和Y轴的图形?

下面是一个很小的示例代码,它将导致我得到的相同的错误:

代码语言:javascript
运行
复制
import matplotlib.pyplot as plt

y = [0, 8, 9, 3, 0]
x = [1, 2, 3, 4, 5, 6, 7]

plt.plot(x, y)
plt.show()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-25 22:51:09

这实际上是找到这里的答案的拷贝/粘贴,但我将展示我为使这些内容与之匹配所做的工作。

首先,我们需要决定使用哪个数组-长度为7的x_array或长度为5的y_array。请注意,我使用的是numpy数组,而不是列表。

让我们加载模块

代码语言:javascript
运行
复制
import numpy as np
import matplotlib.pyplot as plt
import scipy.interpolate as interp

和阵列

代码语言:javascript
运行
复制
y = np.array([0, 8, 9, 3, 0])
x = np.array([1, 2, 3, 4, 5, 6, 7])

在这两种情况下,我们都使用interp.interp1d,这是在文档中详细描述的。

x_array缩减为y_array的长度

代码语言:javascript
运行
复制
x_inter = interp.interp1d(np.arange(x.size), x)
x_ = x_inter(np.linspace(0,x.size-1,y.size))

print(len(x_), len(y))
# Prints 5,5

plt.plot(x_,y)
plt.show()

这给

并将y_array增加到x_array的长度。

代码语言:javascript
运行
复制
y_inter = interp.interp1d(np.arange(y.size), y)
y_ = y_inter(np.linspace(0,y.size-1,x.size))

print(len(x), len(y_))
# Prints 7,7
plt.plot(x,y_)
plt.show()

这给

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72382664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档