у меня есть данные
Name V1
M1 50
M2 10
M1 30
M1 45
M2 5
M2 7
С моим кодом я смог создать violin plot
. Но я не знаю, как поместить значение среднего в каждом сюжете скрипки в число, используя base R
(не ggplot
)?
Вот пример моего кода.
with(Data, vioplot(V1[Name= = "M1"], V1[Name= = "M2"], names=c("M1", "M2"),
plotCentre = "line", rectCol = "white", col = "gray", ylab = "",
ylim=c(0,80)))
title(ylab = "A($m)", xlab = "Name", main = "AA")
Большое спасибо
Привет Спасибо за ваше предложение. Я уже отредактировал, чтобы было понятно. Надеюсь, что сейчас все в порядке?
Я обновил свой ответ версией, в которой средства появляются внутри скрипичных сюжетов. Пожалуйста, посмотрите.
Вы можете использовать следующий код:
Ваши данные:
Data <- read.table(header = TRUE,
text = "Name V1
M1 50
M2 10
M1 30
M1 45
M2 5
M2 7")
Код
library(vioplot)
library(dplyr)
## calculate the mean per group
DataMean <- Data %>%
group_by(Name) %>%
summarize(mean = mean(V1))
## your plotting code
with(Data, vioplot(V1[Name= = "M1"], V1[Name= = "M2"], names=c("M1", "M2"),
plotCentre = "line", rectCol = "white", col = "gray", ylab = "",
ylim=c(0,80)))
title(ylab = "A($m)", xlab = "Name", main = "AA")
## use base r 'text' to add the calculated means
## at position 1 and 2 on the X-axis, and
## at height of the Y-axis of 60 (2 times)
text(x = c(1, 2), y = c(60,60), labels = round(DataMean$mean, 2))
получается следующий сюжет:
Конечно, мы можем поиграть с положением текста. Если мы хотим, чтобы средние значения отображались внутри графиков скрипки, мы используем средние значения в качестве координат Y и меняем цвет, чтобы сделать его более заметным (и сдвигаем координаты X немного вправо в сочетании с более светлым серым цветом). ).
### playing with position and color
with(Data, vioplot(V1[Name= = "M1"], V1[Name= = "M2"], names=c("M1", "M2"),
plotCentre = "line", rectCol = "white", col = "lightgray", ylab = "",
ylim=c(0,80)))
title(ylab = "A($m)", xlab = "Name", main = "AA")
text(x = c(1.1, 2.1), y = DataMean$mean, labels = round(DataMean$mean, 2), col = "blue")
что дает этот сюжет:
Пожалуйста, дайте мне знать, хотите ли вы этого.
именно то, что я хочу. Большое спасибо
С удовольствием, рад, что смог помочь.
Добро пожаловать в СО. Перед публикацией вопроса прочтите: Как задать хороший вопрос.