【问题标题】:ggplot gradient fill not workingggplot渐变填充不起作用
【发布时间】:2017-03-02 08:29:15
【问题描述】:

我有以下数据集和 r 代码来生成 ggplot。

   df = data.frame(Animals = c("Dog", "Cat", "Horse", "Giraffe"), Number =           c(88, 11, 107, 59),
            Cat = c("A", "A", "B", "B"),
            Place=c("Place1","Place2"))
 ggplot(df, aes(Animals, Cat, fill=Number)) + 
 geom_tile() +
 scale_fill_gradient2(low= "red", high = "green",
                   mid = "orange",
                   midpoint = 50,
                   space = "Lab")+
geom_text(label=df$Number)+
facet_grid(.~Place)

以上代码的输出是,

如果你看到图表,渐变填充不是代码中提到的。 根据代码,较大的数字应为绿色。

需要一些专家对此的看法。

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    渐变填充正确。是文本值不正确。请注意,例如,在下面的数据中,HorseB 的值为 107,但绘图中该图块的文本值为 11。

      Animals Number Cat  Place
    1     Dog     88   A Place1
    2     Cat     11   A Place2
    3   Horse    107   B Place1
    4 Giraffe     59   B Place2
    

    更改为geom_text(aes(label=Number))。通过使用geom_text(label=df$Number),您可以在ggplot 环境之外到达df 的全局环境版本,其中Number 的值是(按照数据框中的顺序)88、11、107、59。这就是图中数字的绘制顺序(从左到右)。但是,通过将Number映射label,通过使用aes(label=Number),您可以确保label 美学和fill 美学都以相应的方式映射到图形:由ggplot geoms 和美学映射的“自然”逻辑决定。

    ggplot(df, aes(Animals, Cat, fill=Number)) + 
      geom_tile() +
      scale_fill_gradient2(low= "red", high = "green", mid = "orange",
                           midpoint = 50, space = "Lab")+
      geom_text(aes(label=Number)) +
      facet_grid(.~Place)
    

    这似乎是一个玩具示例,但我想我还想指出,您可以通过使用 scales="free_x" 来让 ggplot 删除空值的空间:

    ggplot(df, aes(Animals, Cat, fill=Number)) + 
      geom_tile() +
      scale_fill_gradient2(low= "red", high = "green", mid = "orange",
                           midpoint = 50, space = "Lab")+
      geom_text(aes(label=Number)) +
      facet_grid(.~Place, scales="free_x")
    

    【讨论】:

    • 有没有办法可以重新排列 x 轴?说而不是 Cat,Dog,Giraffe,Horse 我想要 Giraffe,Dog,Cat,Horse
    • 在重新排序轴时:只需指定所需的顺序即可对因子变量进行重新排序。所以你会这样做:df$Animals = factor(df$Animals, levels=c("Giraffe","Dog","Cat","Horse")).
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多