Это поможет?
viridis
не совместим с моей версией R, поэтому я не совсем уверен, как это будет выглядеть. Я закомментировал соответствующие строки кода, чтобы пример можно было воспроизвести.
Применяется set.seed()
к данным, чтобы сделать их воспроизводимыми.
Параметр
geom_col()
требует меньше ввода, чем geom_bar()
geom_text()
для автоматической маркировки значений; Неясно, означает ли ссылка в вопросе об этикетках бананов этикетки только для бананов или для всех видов. Показали, как применить фильтр, чтобы применить метки только к бананам, просто удалите фильтр, если вам нужны метки для всех видов. Если вам действительно нужны метки вручную, создание вспомогательного фрейма данных — один из способов.
Не совсем понятно, что вы имеете в виду, когда хотите масштабировать в %: отредактировали заголовок оси, чтобы включить единицу измерения в %. И изменена ось Y с scale_y_continuous()
, хотя заметили, что hrbrthemes::scale_x_percent()
существует, поэтому вы можете изучить, как использовать эту функцию. Выбирайте...
library(ggplot2)
#library(viridis)
library(hrbrthemes)
library(dplyr)
ggplot(data, aes(x = specie, y = value, fill = condition)) +
geom_col() +
geom_text(data = filter(data, specie == "banana"),
aes(x = specie,
y = value,
label = paste(round(value, 0), "%")),
position = "stack")+
# scale_fill_viridis(discrete = T) +
scale_y_continuous(labels = scales::percent_format(scale = 1))+
theme_ipsum() +
labs(x = NULL,
y = "Value [%]",
title = "Studying 4 species..")

Создано 02 июля 2021 г. в пакете reprex (v2.0.0)
данные
set.seed(123)
specie <- c(rep("sorgho" , 3) , rep("poacee" , 3) , rep("banana" , 3) , rep("triticum" , 3) )
condition <- rep(c("normal" , "stress" , "Nitrogen") , 4)
value <- abs(rnorm(12 , 0 , 15))
data <- data.frame(specie,condition,value)
Что ты имеешь в виду? Где/как вы хотите вручную добавить значения на этот график?
Пожалуйста, укажите пакеты, которые вы используете
Я добавил пакеты. По оси Y я хотел бы иметь шкалу в%.
Для банана. Стресс и азот должны быть только 10%, тогда как нормальный должен быть 80%.