因此,假设我在Julia中定义了以下数组:
M=[[1,1],[2,4],[3,9],[4,16],[5,25],[6,36],[7,49],[8,64],[9,81],[10,100],[11,121],[12,144]]显然,每个元素[x,y]都遵循二次规则$y=x^2$,所以当我使用命令plot(M)绘制它时,我希望得到一个抛物线形状。
但是相反,我得到了这样的东西:

][1
我做错了什么,我应该怎么做才能得到我想要的结果--抛物线形状?
发布于 2022-09-15 00:09:21
绘图函数有几种方法: 图(Y):将输入作为y轴的值,并生成一个单位范围为x值.
也就是说,当您将单个参数传递给plot时,参数中的值将被解释为y轴值,x轴为1, 2, 3, ...。
在这里,因为M是向量的向量,所以为每个内部向量创建了一个线图。例如,[3, 9]生成一个从(1, 3)到(1, 9)的线条图。
要绘制抛物线,在这种情况下,您可以:
plot(first.(M), last.(M))它将提取内部数组的每个第一个元素以形成x-轴,以及为y-轴提取每个第二个元素。

当然,如果出于其他原因不需要M作为向量向量,那么最好首先将它们创建为单独的向量。
如果M被改为Matrix (这是在Julia中创建2D数组的推荐方法),例如。
julia> M
12×2 Matrix{Int64}:
1 1
2 4
3 9
etc.然后你就可以用
julia> @views plot(M[:, 1], M[:, 2])M[:, 1]获取第一列(x轴)上的所有值,在第二列(y轴)上获取相同的值,而开头的@views避免不必要地分配新的内存区域,而是直接从M本身读取和使用。
发布于 2022-09-15 06:06:34
有趣的是,由于绘图将元组数组处理为(x,y)点数组,所以这是可行的:
plot(Tuple.(M))

https://stackoverflow.com/questions/73724184
复制相似问题