我有以下数据集和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)
上面代码的输出是,
如果您看到图表,则渐变填充不会在代码中提到。 根据代码,较高的数字应为绿色。
需要一些专家观点。
答案 0 :(得分:6)
渐变填充是正确的。它的文本值不正确。请注意,例如,在下面的数据中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
更改为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")