R: Как присвоить именованный ярлык номеру в масштабе на ggplot - PullRequest
0 голосов
/ 30 апреля 2020

Я хочу пометить 0 и 1 на оси Y (см. Рисунок 1). Когда я делаю это с помощью функции «scale_y_discrete», кажется, что шкала сдвигается (см. Рисунки 2 и 3 ниже)?

Благодарю за любой совет.

Drucker2 <- function(z) {
  library(ggplot2)  
  name1 <- deparse(substitute(z))
  filename <- sprintf("Plot%s.png", gsub(" ", "_Alt", name1))
  p<-(ggplot() + aes(x = Posture, color = Sex, group = Sex, y = z) +
        stat_summary(fun.y = mean, geom = "point") +
        stat_summary(fun.y = mean, geom = "line") + 
        labs(title = name1) +
        ylab (name1)+
##following coding line makes the difference between the two pictures
        scale_y_discrete(name1, limits=c("0"="Not chosen", "1"="Chosen")) +
        scale_color_discrete(name = "Sex of physician", labels = c("female physician", "male physician"))+
      coord_cartesian(ylim = c(0, 1)
  )

  ggsave(filename,p, width = 5, height = 5)
}

Leader = x$Leader

Drucker2(Leader)

Изображение 1: Y Шкала изменяется от 0 до 1 Image 1: Y Scale goes from 0 to 1

Изображение 2: масштаб подобен смещенному, а не выбранному = 0 выше графика Image 2: The scale is like shifted not chosen = 0 ist above the graph

Изображение 3: Увеличение шкалы Y с «0, 1» до «0,2» показывает, что шкала подобна смещенной enter image description here

1 Ответ

2 голосов
/ 30 апреля 2020

Ваше замечание о том, что «не выбрано» / «выбрано» добавлено выше, является правильным - значения y являются цифрами c (в непрерывном масштабе) и <1 - ggplot, кажется, «считывает» значения дискретного масштаба как 1 , 2, ..., поэтому они появляются над вашими диаграммами. Либо вам нужно преобразовать значения y в дискретные значения, либо, что я бы посоветовал вам использовать аннотации, чтобы показать «выбрано» против «не выбрано» - вот простой пример: </p>

library(tidyverse)

df <- tibble(Posture = rep(c("Closed", "Open"), 2),
         Sex = c("female", "male", "male", "female"),
         z = c(0.23, 0.3, 0.1, 0.4))

ggplot(df) + aes(x = Posture, color = Sex, group = Sex, y = z) +
        stat_summary(fun.y = mean, geom = "point") +
        stat_summary(fun.y = mean, geom = "line") + 
        geom_hline(yintercept = 0.2) +
        annotate("text", x = 0.5, y = 0.21, label = "Chosen", hjust = 0) +
        annotate("text", x = 0.5, y = 0.19, label = "Not Chosen", hjust = 0) +
         scale_color_discrete(name = "Sex of physician",
            labels = c("female physician", "male physician"))

Это пример быстрый и грязный - особенно x = 0.5, y = 0.21 в аннотациях не будет вести себя хорошо, когда ваши весы меняются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...