我正在使用Julia中的PyPlot库进行绘图,并且散布函数似乎有一点“不便”,即只接受坐标作为两个参数:一个数组用于所有x值,另一个用于所有y值价值观,即
Chr(x)
scatter(xxs,yys)
和x=[x1,x2,...]
。
如果我有一个带有坐标点的集合或元组,比如
y=[y1,y2,...]
直接在Python中使用pyplot / matplotlib解决了一个班轮的不便,如here in StackOverflow所示:
A=([x1,y1],[x2,y2],...)
但似乎Julia上的拉链完全不同。到目前为止,我已经提出了以下解决方案,但它似乎相当不优雅:
plt.scatter(*zip(*li))
是否有更多“功能性”或单线(或双线)方法?
答案 0 :(得分:3)
如在另一个答案中所提到的,可以在Julia中使用相同的方法,即scatter(zip(A...)...)
,但对于较大的向量,这非常慢,应该避免使用。
另一种可能性是使用getindex.(A, i)
来获取i
中向量的所有A
元素的向量。
julia> A = [[i, 10i] for i=1:5]
5-element Array{Array{Int64,1},1}:
[1, 10]
[2, 20]
[3, 30]
[4, 40]
[5, 50]
julia> getindex.(A,1)
5-element Array{Int64,1}:
1
2
3
4
5
julia> getindex.(A,2)
5-element Array{Int64,1}:
10
20
30
40
50
答案 1 :(得分:2)
我可以想到三种方法:
using PyPlot
A = ([1,2],[3,4],[5,6],[7,8])
# approach 1
scatter(zip(A...)...)
# approach 2
B = hcat(A...)
@views scatter(B[1,:], B[2,:])
# approach 3
scatter([x[1] for x in A], [x[2] for x in A])
第一个可能是最具功能性的风格。
在第二个中,如果需要分析数据,可以使用B
更容易使用;注: @views
需要Julia 0.6,但可以省略。
第三种可能是最容易理解的。