在 geom_tile 图上粘贴平均值(R 中的 ggplot)
Paste mean values on geom_tile plot (ggplot in R)
我正在使用此代码:
library(tidyverse)
library(reshape)
mtcars <- melt(mtcars, id="vs")
mtcars$vs <- as.character(mtcars$vs)
ggplot(mtcars, aes(x=vs, y=variable, fill=value)) +
geom_tile()
如何将平均值作为文本粘贴到每个图块上?我试过 + geom_text(mtcars, aes(vs, variable, label=mean))
,但没有用。
另外,x轴上0和1的顺序怎么调反?
您可以调整 stat_summary_2d()
以根据使用 after_stat()
计算的变量显示文本。 x轴的顺序可以通过设置x-scale的limits
参数来确定。
suppressPackageStartupMessages({
library(tidyverse)
library(reshape)
library(scales)
})
mtcars <- melt(mtcars, id="vs")
mtcars$vs <- as.character(mtcars$vs)
ggplot(mtcars, aes(x=vs, y =variable, fill = value)) +
geom_tile() +
stat_summary_2d(
aes(z = value,
label = after_stat(number(value, accuracy = 0.01))),
fun = mean,
geom = "text"
) +
scale_x_discrete(limits = c("1", "0"))
由 reprex package (v1.0.0)
于 2021-04-06 创建
另请注意,geom_tile()
仅绘制属于 x 轴和 y 轴类别的数据集的最后一行,因此除非有意,否则需要注意这一点。
您可以在 ggplot 之外进行处理工作以生成:
library(ggplot2)
library(dplyr)
library(tidyr)
df <-
mtcars %>%
pivot_longer(-vs) %>%
group_by(vs, name) %>%
mutate(vs = factor(vs, levels = c(1, 0), ordered = TRUE),
mean = round(mean(value), 2))
ggplot(df, aes(x=vs, y=name, fill=value)) +
geom_tile() +
geom_text(aes(vs, name, label=mean), colour = "white", check_overlap = TRUE)
由 reprex package (v1.0.0)
于 2021-04-06 创建
我正在使用此代码:
library(tidyverse)
library(reshape)
mtcars <- melt(mtcars, id="vs")
mtcars$vs <- as.character(mtcars$vs)
ggplot(mtcars, aes(x=vs, y=variable, fill=value)) +
geom_tile()
如何将平均值作为文本粘贴到每个图块上?我试过 + geom_text(mtcars, aes(vs, variable, label=mean))
,但没有用。
另外,x轴上0和1的顺序怎么调反?
您可以调整 stat_summary_2d()
以根据使用 after_stat()
计算的变量显示文本。 x轴的顺序可以通过设置x-scale的limits
参数来确定。
suppressPackageStartupMessages({
library(tidyverse)
library(reshape)
library(scales)
})
mtcars <- melt(mtcars, id="vs")
mtcars$vs <- as.character(mtcars$vs)
ggplot(mtcars, aes(x=vs, y =variable, fill = value)) +
geom_tile() +
stat_summary_2d(
aes(z = value,
label = after_stat(number(value, accuracy = 0.01))),
fun = mean,
geom = "text"
) +
scale_x_discrete(limits = c("1", "0"))
由 reprex package (v1.0.0)
于 2021-04-06 创建另请注意,geom_tile()
仅绘制属于 x 轴和 y 轴类别的数据集的最后一行,因此除非有意,否则需要注意这一点。
您可以在 ggplot 之外进行处理工作以生成:
library(ggplot2)
library(dplyr)
library(tidyr)
df <-
mtcars %>%
pivot_longer(-vs) %>%
group_by(vs, name) %>%
mutate(vs = factor(vs, levels = c(1, 0), ordered = TRUE),
mean = round(mean(value), 2))
ggplot(df, aes(x=vs, y=name, fill=value)) +
geom_tile() +
geom_text(aes(vs, name, label=mean), colour = "white", check_overlap = TRUE)
由 reprex package (v1.0.0)
于 2021-04-06 创建