#r #ggplot2
#r #ggplot2
Вопрос:
У меня есть две таблицы данных dat
и dat.num
. Я создал гистограмму из данных dat
. По оси x я хотел бы включить значения столбца n
из данных dat.num
. Здесь я сделал это вручную, но есть ли способ напрямую скопировать его из данных dat.num
? Также в заголовок графика я хотел бы включить сумму n
. Любая помощь приветствуется. Спасибо!
dat <- read.table(text = "Var Type1 Type2
A1 9217 13725
A2 6226 9133
A3 14888 21531
A4 5272 7482
A5 4489 6608
A6 8298 12212", header= T)
dat.num <- read.table(text = "n Dat Mat
3 5 8
10 2 3
11 2 5
100 2 5
1 2 33
15 2 3", header=T)
library(ggplot2)
library(reshape2)
dat.m <- melt(dat)
ggplot(dat.m, aes(Var, value, fill = variable))
geom_bar(stat = "identity")
scale_x_discrete(limits=c('A1','A2','A3','A4','A5','A6'),
labels= c('name1n(n=3)',
'name2n(n=10)',
'name3n(n=11)',
'name4n(n=100)',
'name5n(n=1)',
'name6n(n=15)'))
labs(x="Type",
y="Value",
title="My plot",
subtitle="n_total = 140")
Ответ №1:
Вместо этого вы можете использовать paste()
или paste0()
для установки меток и субтитров по оси x, например:
ggplot(dat.m, aes(Var, value, fill = variable))
geom_bar(stat = "identity")
scale_x_discrete(limits=c('A1','A2','A3','A4','A5','A6'),
labels= paste0("name", 1:6, "n(n=", dat.num$n, ")"))
labs(x="Type",
y="Value",
title="My plot",
subtitle=paste("n_total =", sum(dat.num$n)))
По умолчанию paste()
используется пробел в качестве разделителя между строками. paste0()
эквивалентно paste(..., sep = "")
, без разделителя.
Комментарии:
1. Вместо этого используйте один
paste0
с вашими именами в векторе. Например.paste0(c("abc", "def", "ghi", "jkl", "mno", "pqr"), "n(n=", dat.num$n, ")")