条形图-计数变量显示频率,而不是数据列中的值

时间:2018-12-18 00:09:38

标签: r data-visualization data-science data-analysis

供参考,这是我的数据- here

我试图查看这些变量之间的关系并使用barplot。以下是我正在使用的R代码并绘制出我正在绘制的图。

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

here

我想在Y轴上看到DiagAge(诊断出糖尿病的年龄),但是,当前代码显示的是看起来像某事物频率的数字。

2 个答案:

答案 0 :(得分:0)

这里是tidyrggplot的解决方案。我使用代表性数据来节省时间。以后,请使用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))

欢呼

答案 1 :(得分:0)

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创建一个mutate变量。为了示例简洁起见,我filter给出了某些值(很可能对您没有必要或无效)。

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_colfill堆叠'em,垂直轴为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