Я изо всех сил пытаюсь повернуть метку значений счетчика в geom_histogram. Я хотел бы повернуть метки, которые должны быть вверху каждой панели. Я использую следующий код:

Пример игрушки:

ex_tfdp = data.frame(x=rnorm(1000,10,10))

ggplot(ex_tfdp) +
geom_histogram(aes(x = x), boundary = 0,binwidth = 5, color="black", fill="#FFC857")+
  stat_bin( geom="text", colour="black", size=3.5,
          aes(x = x,label=..count..), angle = 90, vjust = -1.5)+ 
 theme(axis.text.x = element_text(angle = 90, hjust = .5),
        panel.background = element_blank(),
        legend.position="bottom",
        legend.title=element_blank(),
        axis.ticks.y=element_blank())

enter image description here

Любой намек на то, как я могу изменить угол этих значений и поместить их в верхнюю часть каждой панели?

2
DR15 26 Ноя 2021 в 15:57
Было бы неплохо иметь воспроизводимый пример. Кроме того, непонятно, чего именно вы пытаетесь достичь. что вы имеете в виду под "вращением"?
 – 
djas
26 Ноя 2021 в 16:06
Я бы хотел изменить угол наклона меток.
 – 
DR15
26 Ноя 2021 в 16:10
И как изменение угла сделает их поверх соответствующих полос? кажется, что вы хотите отрегулировать их вертикальное положение?
 – 
djas
26 Ноя 2021 в 16:13
Я сделал игрушечный пример ... Я хотел бы поместить значения в верхнюю часть каждой полосы и изменить их угол (90º).
 – 
DR15
26 Ноя 2021 в 16:16

2 ответа

Лучший ответ

У нас нет ваших данных, но предполагаем, что они похожи на следующие:

set.seed(2)
my_data <- data.frame(measure = rexp(20000)^1.2 * 150)

Затем вы можете правильно объединить свои данные, переключившись на geom_text и используя stat = "bin". Тогда вы все равно можете передать breaks в качестве аргумента стат. Это позволяет использовать параметр geom_text angle для поворота на 90 градусов. После небольшой настройки hjust и vjust ваши ярлыки будут правильными:

ggplot(my_data) +
  geom_histogram(aes(x = measure), boundary = 0,
                 binwidth = 100, color="black", fill="#FFC857")+
   geom_text(stat = "bin", colour = "black", size = 3.5,
             breaks = seq(0,2100,100), hjust = -0.5,
            aes(x = measure, label=..count..), vjust = 0.5, angle = 90)+
         scale_x_continuous(breaks = seq(0,2100,100), 
                            labels = seq(0,2100,100),
                            expand = expansion(add = c(0, 0))) +
  scale_y_continuous(limits = c(0, 15000)) +
  theme(axis.text.x = element_text(angle = 90, hjust = .5),
        panel.background = element_blank(),
        legend.position="bottom",
        legend.title=element_blank(),
        axis.ticks.y=element_blank())

enter image description here

2
Allan Cameron 26 Ноя 2021 в 16:18
У меня отлично работает! Это именно то, что я хотел!
 – 
DR15
26 Ноя 2021 в 16:21

Я немного упростил ваш пример:

require(ggplot2)
require(gridExtra)

set.seed(15)
ex_tfdp = data.frame(x=rnorm(1000,10,10))

original.plot = ggplot(ex_tfdp) +
    geom_histogram(aes(x = x), boundary = 0,binwidth = 5, color="black", fill="#FFC857")+
    stat_bin( geom="text", colour="black", size=3.5,
              aes(x = x,label=..count..), angle = 90, vjust = -1.5)

new.plot = ggplot(ex_tfdp) +
    geom_histogram(aes(x = x), boundary = 0, binwidth = 5)+ ylim(c(0, 220)) +
    stat_bin( geom="text", colour="black", size=3.5,
              aes(x = x,label=..count..), angle = 90, boundary = 0, binwidth = 5, hjust = -.5)

grid.arrange(original.plot, new.plot, ncol=2)    

enter image description here

Ключевым моментом здесь является сохранение boundary = 0 и binwidth = 5 при добавлении слоя stat_bin.

2
djas 26 Ноя 2021 в 16:29