R 创建一个包含多个因子的龙卷风图

R 创建一个包含多个因子的龙卷风图,r,ggplot2,R,Ggplot2,我正在处理数据,我正在将其转化为龙卷风图,最终我希望它看起来像这样: 当前我的数据如下所示: 使用facet_wrap,我得到了如下结果,但我希望在一个图上的所有内容都与开始时的示例类似: ggplot(data = df, aes(x = Person)) + geom_crossbar(aes(y=Mean, ymin= Min, ymax = Max)) + coord_flip() + facet_wrap(~Letter, strip.position = &qu

我正在处理数据,我正在将其转化为龙卷风图,最终我希望它看起来像这样:

当前我的数据如下所示:

使用facet_wrap,我得到了如下结果,但我希望在一个图上的所有内容都与开始时的示例类似:

ggplot(data = df, aes(x = Person)) + 
  geom_crossbar(aes(y=Mean, ymin= Min, ymax = Max)) + 
  coord_flip() + 
  facet_wrap(~Letter, strip.position = "left", scales = "free_x") +
  theme(panel.spacing = unit(0, "lines"), strip.background = element_blank(), strip.placement = "outside")

在ggplot中有什么方法可以做到这一点吗?
很抱歉,我不得不将图片作为链接包含在内

这个怎么样?请参阅下面的代码和结果,以及后面的一些解释

# reorder levels in order of appearance
df$Person <- factor(df$Person, levels=unique(df$Person))

ggplot(df, aes(x=Letter)) +
  geom_crossbar(
    aes(y=Mean, ymin=Min, ymax=Max),
    fill='dodgerblue2', width=0.8
  ) +
  facet_grid(Person~., scales='free', space='free', switch = 'y') +
  scale_y_continuous(expand=expansion(mult=c(0.3,0.3))) +
  labs(x=NULL, y='Axis Label Here') +
  theme_classic() +
  theme(
    strip.placement = 'outside',
    strip.background = element_rect(color=NA, fill=NA),
    strip.text.y=element_text(angle=90, size=12),
    panel.spacing = unit(0,'pt'),
    panel.background = element_rect(color='black')
  ) +
  coord_flip()
#按外观顺序重新排列级别

df$Person这个怎么样?请参阅下面的代码和结果,以及后面的一些解释

# reorder levels in order of appearance
df$Person <- factor(df$Person, levels=unique(df$Person))

ggplot(df, aes(x=Letter)) +
  geom_crossbar(
    aes(y=Mean, ymin=Min, ymax=Max),
    fill='dodgerblue2', width=0.8
  ) +
  facet_grid(Person~., scales='free', space='free', switch = 'y') +
  scale_y_continuous(expand=expansion(mult=c(0.3,0.3))) +
  labs(x=NULL, y='Axis Label Here') +
  theme_classic() +
  theme(
    strip.placement = 'outside',
    strip.background = element_rect(color=NA, fill=NA),
    strip.text.y=element_text(angle=90, size=12),
    panel.spacing = unit(0,'pt'),
    panel.background = element_rect(color='black')
  ) +
  coord_flip()
#按外观顺序重新排列级别

df$Person请提供一个可以运行的。请提供一个可以运行的。这非常有效,谢谢!我想知道你是否知道如何均匀地隔开(现在是y)轴标签,因为我想放的标签很长,我试图包装我的文本,但它不会扩大间距。它尝试了scale_x_离散扩展,但它只扩展了“组”之间的距离,而不是均匀地跨越。最好的方法可能是使用不同的纵横比和大小保存绘图。R中的图形有点滑稽——文本的比例与情节的比例不同。这意味着,如果您使用
ggsave(“myfile.png”,width=5,height=8)
ggsave(“myfile.png”,width=8,height=10)
,或者类似的方式进行保存,则会得到截然不同的结果。你可以看到这一点,如果你采取你的绘图窗口和调整大小-绘图将看起来不同。我的猜测是,使用更大的
高度=
进行保存将使绘图和标签正常工作。哦,对于在轴上包装文本,我最喜欢的方法是使用
scales
包中的
wrap_format()
列出。这非常有效,谢谢!我想知道你是否知道如何均匀地隔开(现在是y)轴标签,因为我想放的标签很长,我试图包装我的文本,但它不会扩大间距。它尝试了scale_x_离散扩展,但它只扩展了“组”之间的距离,而不是均匀地跨越。最好的方法可能是使用不同的纵横比和大小保存绘图。R中的图形有点滑稽——文本的比例与情节的比例不同。这意味着,如果您使用
ggsave(“myfile.png”,width=5,height=8)
ggsave(“myfile.png”,width=8,height=10)
,或者类似的方式进行保存,则会得到截然不同的结果。你可以看到这一点,如果你采取你的绘图窗口和调整大小-绘图将看起来不同。我的猜测是,使用更大的
高度=
进行保存将使绘图和标签正常工作。哦,对于在轴上包装文本,我最喜欢的方法是使用
scales
包中的
wrap_format()