首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Gadfly对单个线条进行着色

使用Gadfly对单个线条进行着色
EN

Stack Overflow用户
提问于 2016-03-07 04:53:10
回答 2查看 821关注 0票数 3

有没有办法给每个数据集着色?

有一个使用DataFrames的解决方案,但是没有它们的情况会怎么样呢?

我试过了,但没有效果:

代码语言:javascript
复制
using Gadfly

plot(
  layer(x=1:10, y=1:10, Stat.step, Geom.line),
  layer(x=1:10, y=2:11, Stat.step, Geom.line),
  color=["red", "green"]
)
EN

回答 2

Stack Overflow用户

发布于 2016-03-07 21:37:13

密谋应该不会这么痛苦。下面是如何在Plots中使用Gadfly后端执行此操作:

代码语言:javascript
复制
using Plots; gadfly(size=(400,300))
plot(rand(10,2), line = ([:red :green], :step))

票数 6
EN

Stack Overflow用户

发布于 2016-03-07 12:06:25

@GnimucK。comment展示了在交互工作时如何做到这一点。但是,当您想要将颜色作为参数传递给函数时,该方法会遇到一些困难。在一般情况下,我希望在运行时选择多行颜色,我有一个函数,看起来有点像下面的代码:

代码语言:javascript
复制
using Compose, Gadfly
function my_plot_with_colors{T<:Number}(x::Vector{Vector{T}}, y::Vector{Vector{T}}, colorVec::Vector{ASCIIString})
    !(length(x) == length(y) == length(colorVec)) && error("Length mismatch in inputs")
    layerArr = Array(Vector{Layer}, length(x))
    for k = 1:length(x)
        layerArr[k] = layer(x=x[k], y=y[k], Geom.line, Theme(default_color=parse(Compose.Colorant, colourVec[k])))
    end
    return(plot(layerArr...))
end

其中,如果为length(x) = 3,则输入向量colourVec将如下所示:["red", "green", "blue"]

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

https://stackoverflow.com/questions/35832408

复制
相关文章

相似问题

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