我有以下数据集和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)
Run Code Online (Sandbox Code Playgroud)
上面代码的输出是,
如果您看到图形,则渐变填充不会在代码中提到.根据代码,较高的数字应为绿色.
需要一些专家观点.
渐变填充是正确的.这是不正确的文本值.注意,例如,在下面的数据Horse,并B具有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
Run Code Online (Sandbox Code Playgroud)
改为geom_text(aes(label=Number)).通过使用geom_text(label=df$Number),您将到达ggplot环境之外的全局环境版本df,其中的值Number(在数据框中按顺序排列),88,11,107,59 .这就是数字的顺序在图中绘制(从左到右).然而,通过映射 Number到label,通过使用aes(label=Number),可以确保在label审美和fill审美都映射到图形以相应的方式,如通过"自然"逻辑确定ggplotgeoms和审美映射.
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)
Run Code Online (Sandbox Code Playgroud)
这似乎是一个玩具的例子,但我想我也会指出你可以通过使用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")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
406 次 |
| 最近记录: |