我想绘制多条线(这里简化为两条),但不知道如何在同一图上绘制不同的颜色。这是分隔图形的版本。
using UnicodePlots, DataFrames
function job()
names, data = ["A", "B"], [
DataFrame("x"=>[1, 2, 3], "y"=>[3, 5, 7]),
DataFrame("x"=>[1, 2, 3], "y"=>[8, 2, 6]),
]
y_min, y_max = typemax(Int64), typemin(Int64)
y_min = min(minimum(data[1].y), minimum(data[2].y))
y_max = max(maximum(data[1].y), maximum(data[2].y))
ylim = (y_min, y_max)
for i = 1:length(names)
p = lineplot(data[i].x, data[i].y, name=names[i], ylim=ylim)
show(p)
println("")
#if i == 1
# p=lineplot(data[i].x, data[i].y, name=names[i], ylim=ylim)
#else # failed for p undefined when i == 2
# lineplot!(p, data[i].x, data[i].y, name=names[i], ylim=ylim)
#end
end
#show(p)
println("")
end
job()
基本正确。下面是固定的版本:
using UnicodePlots, DataFrames
function job()
names, data = ["A", "B"], [
DataFrame("x"=>[1, 2, 3], "y"=>[3, 5, 7]),
DataFrame("x"=>[1, 2, 3], "y"=>[8, 2, 6]),
]
y_min, y_max = typemax(Int64), typemin(Int64)
y_min = min(minimum(data[1].y), minimum(data[2].y))
y_max = max(maximum(data[1].y), maximum(data[2].y))
ylim = (y_min, y_max)
local p
for i = 1:length(names)
if i == 1
p=lineplot(data[i].x, data[i].y; name=names[i], ylim=ylim)
else
lineplot!(p, data[i].x, data[i].y; name=names[i])
end
end
show(p)
println("")
end
job()
问题:
- 当添加另一条线时,不能改变轴。
- 循环中的变量需要在外部定义以扩展其作用域。
我想就是这样了。