2017-03-01 125 views
4

我有以下数据集和r代码来生成ggplot。上面的代码的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) 

输出是

enter image description here

如果看到图中,渐变填充不作为代码提及。根据代码 更高的数字应该是绿色的。

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

回答

5

渐变填充是正确的。这是不正确的文本值。注意,例如,在低于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。因此,这是数字在图中被绘制(从左到右)。然而,通过映射Numberlabel,通过使用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) 

enter image description here

这似乎是一个玩具的例子,但我想我也想指出的是,你可以有ggplot空值删除空间利用scales="free_x"当你情感上:

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") 

enter image description here

+0

有没有办法让我重新排列x轴?说,而不是猫,狗,长颈鹿,马我想要长颈鹿,狗,猫,马 – vanathaiyan

+0

重新排序轴:因子变量可以通过指定您想要的顺序简单地重新排序。所以你会这样做:'df $ Animals = factor(df $ Animals,levels = c(“长颈鹿”,“狗”,“猫”,“马”))''。 – eipi10