【问题标题】:Is there an R function that colors blocks for a given vector of values?是否有一个 R 函数可以为给定的值向量的块着色?
【发布时间】:2019-06-25 18:40:28
【问题描述】:

我有一个包含 100 个值的向量,我想根据图中的值绘制一个强度图,该图用 10 个小方块等分。

我正在尝试在 R 中使用 ggplot2 包,但我被卡住了。下面是我的代码

> vec <- rnorm(100,5,4) #100-vector

> ggplot(NULL)  + geom_vline(xintercept = 1:10) + geom_hline(yintercept = 1:10)+
  coord_cartesian(xlim = c(.45, 9.55), ylim = c(.45,9.553))+
  theme(legend.box.spacing = unit(0, "mm"),
        panel.background = element_blank(),
        panel.border = element_rect(colour = "black",fill=NA),
        axis.title.x=element_blank(),
        axis.text.x=element_blank(),
        axis.ticks.x=element_blank(),
        axis.title.y=element_blank(),
        axis.text.y=element_blank(),
        axis.ticks.y=element_blank())  #the graph with 100 blocks
[enter image description here][1]

我希望根据“vec”变量的值绘制此图中的颜色,例如从红色到较小的数字,从深蓝色到较大的数字。

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    我认为这或多或少是你想要的。使用ggplot,您需要绘制数据框,而不仅仅是随机向量。我们需要创建列来映射到 x 和 y 轴:

    set.seed(47)
    vec <- rnorm(100,5,4)
    dd = expand.grid(x = 1:10, y = 1:10)
    dd$vec = vec
    
    ggplot(dd, aes(x = x, y = y, fill = vec)) +
      geom_tile() +
      scale_fill_gradient(low = "firebrick4", high = "dodgerblue2")
    

    使用其他调色板可能会更好,例如,scale_fill_distiller(palette = "Spectral") 非常好。

    【讨论】:

    • 这正是我想要的。我还没有足够的声誉来支持您的回答,但无论如何,非常感谢您!
    猜你喜欢
    • 1970-01-01
    • 2017-10-28
    • 1970-01-01
    • 2019-10-22
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    • 2022-07-28
    相关资源
    最近更新 更多