如何在 r 中绘制不同数据集的组合直方图

问题描述 投票:0回答:1

我有 2 个数据集,我正在尝试找到一种更好的方法来可视化我的结果。您能帮我在 1 个直方图上绘制 2 个直方图,以便更容易比较吗?

数据1:

count <- c('10', '15', '16','16','29')
drug <- c('ibuprofen','aleve','tylenol','claritin', 'ozempic')

数据2:

count <- c('150', '1000', '15','1','234','452','692')
drug <- c('ibuprofen','aleve','tylenol','xanax','gilenya','humira','tums')

这是我尝试过的,但它没有显示我想要的直方图。

ggplot() + 
  geom_point(data = data1, aes(x=count, y=reorder(drug, count), color = "red")) + 
  geom_point(data = data2, aes(x=count, y=reorder(drug, count)))

您能否帮我制作一个包含两个直方图的直方图,以便我可以并排可视化药物,将计数添加到条形图中,并使数据集颜色为黑色和灰色。谢谢!

r dplyr tidyverse tidyr
1个回答
1
投票

如果您只是想绘制计数,您可以将两个数据源都放入数据框中,创建一个标识源的变量,然后使用

bar
几何图形来制作并排条形图:

library(dplyr)
library(tidyr)
library(ggplot2)
df1 <- data.frame(
count  = c(10, 15, 16,16,29),
drug  = c('ibuprofen','aleve','tylenol','claritin', 'ozempic'))

df2 <- data.frame(
  count = c(150, 1000, 15,1,234,452,692), 
  drug = c('ibuprofen','aleve','tylenol','xanax','gilenya','humira','tums'))

df1$source <- "DF1"
df2$source <- "DF2"
df_both <- bind_rows(df1, df2)
df_both <- df_both %>% complete(drug, source, fill=list(count = 0))
ggplot(df_both, aes(x=count, y=drug, fill=source)) + 
  geom_bar(position="dodge", stat = "identity") + 
  labs(x="Count", y="")

创建于 2024-01-16,使用 reprex v2.0.2

© www.soinside.com 2019 - 2024. All rights reserved.