barchart - переменная count показывает частоту вместо значений из столбца данных - PullRequest
0 голосов
/ 18 декабря 2018

Для справки, вот мои данные - здесь

Я пытаюсь увидеть связь между этими переменными и использую barplot.Ниже приведен код R, который я использую, и график, который я получаю.

library(lattice)
barchart(DiagAge~interaction(Gender,Race),groups=Ethnicity,data=df,auto.key=T,stack=T)

здесь

Я хочу видеть DiagAge (возраст, когда был диагностирован диабет) на оси Y, однако текущий код показывает некоторое числоэто похоже на частоту чего-то.

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

tidyverse твой друг!В основном, ggplot2::geom_col.


Ваш код может выглядеть следующим образом:

library(tidyverse)

mytbl <- df %>%
  mutate(racegender = paste(Race,Gender)) 

g <- ggplot(mytbl, aes(racegender)) + scale_fill_brewer(palette = "Spectral")

g + geom_col(aes(fill = Ethnicity, y = DiagAge)) +
  labs(title="Your title", 
       subtitle="Your subtitle") +
  theme(axis.text.x = element_text(angle=65, vjust=0.6))

Здесь я использую этот код наdiamonds набор данных для иллюстрации вашей ситуации.

library(tidyverse)

Создайте переменную cutcolor с помощью mutatefilter для определенных значений для краткости в моем примере (скорее всего, не нужно или не допустимо для вас).

mytbl <- diamonds %>%
  mutate(cutcolor = paste(cut,color)) %>% 
  filter(color %in% c("D", "E", "F"),
         cut %in% c("Fair", "Good", "Very Good"))  # to limit the number of columns

График будет использовать mytbl и иметь cutcolor нагоризонтальная ось:

g <- ggplot(mytbl, aes(cutcolor)) + scale_fill_brewer(palette = "Spectral")

Основная функция ggplot - geom_col.fill складывает их, а вертикальная ось равна price (DiagAge в вашем случае).Деталь theme помогает повернуть текст метки по горизонтали.

g + geom_col(aes(fill = clarity, y = price)) +
  labs(title="Bar Graph with Stacked Types", 
       subtitle="Price Across Diamond Cut and Color") +
  theme(axis.text.x = element_text(angle=65, vjust=0.6))angle=65, vjust=0.6))

Результат:

Cut/Color with Stacked Clarity vs. Price

0 голосов
/ 18 декабря 2018

Вот решение tidyr и ggplot.Я использовал репрезентативные данные, чтобы сэкономить время.В будущем, пожалуйста, добавьте свои данные к вашему вопросу, используя dput(data).Вот предлагаемое решение: Вы можете изменить цвета и темы по своему желанию.

   library(tidyverse)
df<-data.frame(Gender=c("M","F","M"),Race=c("Non White","White","Non White"),DiagAge=c(13,24,25))
df %>% 
  mutate_if(is.character,as.factor) %>% 
  ggplot(aes(Race,DiagAge,fill=Gender))+
  geom_bar(stat="identity",position="identity",col="black")+
  geom_label(aes(label=DiagAge))

Cheers

...