【问题标题】:joining all points inside a grouped point plot using ggplot使用 ggplot 连接分组点图中的所有点
【发布时间】:2018-08-02 07:45:18
【问题描述】:

我有这样的数据框

AA=
States   Clusters ncomp
HR  Cluster-1     9
HR  Cluster-2     4
HR  Cluster-3     9
WB  Cluster-1    13
WB  Cluster-2    13
WB  Cluster-3    13
WB  Cluster-4    13
TL  Cluster-1     9
TL  Cluster-2    11
TL  Cluster-3     9
TL  Cluster-4    10
TL  Cluster-5    11
TL  Cluster-6     7
OR  Cluster-1    15
OR  Cluster-2    15
OR  Cluster-3    15
OR  Cluster-4    14
OR  Cluster-5    15
OR  Cluster-6    15

需要绘制看起来像的东西。我不想使用 facet_wrap。 我可以创建分组点图

【问题讨论】:

  • 那个情节来自哪里?看起来您已经知道如何执行此操作了?
  • “我可以创建分组点图”:你的意思是你能得到那个图?那你想要什么剧情?您的句子“需要绘制看起来像的情节”。还没完,是吗? (我不是英文明星)
  • 不,我加入了油漆点...尚未完成。我绘制了分组点需要线条的帮助

标签: r ggplot2


【解决方案1】:

您可以尝试隐藏facet_grid 和一条tidyverse 线来分隔Cluster 列。 ave也可以这样做

d$C2 <- ave(as.numeric(d$Clusters),  d$States, FUN = function(x) seq(1,length(x))) 

library(tidyverse)
d %>% 
  separate(Clusters, into=c("C1", "C2"), sep="-") %>% 
  ggplot(aes(as.numeric(C2), ncomp, color=States)) + 
   geom_vline(data = .  %>%   count(States) %>% 
                mutate(x=n/2+0.5),
              aes(xintercept=x),
              color="white")+
   geom_point() + 
   geom_line(aes(group=1)) + 
   facet_grid(~States, switch = "x",scales = "free_x", space = "free_x") + 
   scale_x_continuous(breaks = NULL, minor_breaks = NULL, expand = c(0.2,0.5))+
   xlab("States") + 
   theme(axis.text.x = element_blank(),
         axis.ticks = element_blank(),
         strip.background = element_blank(),
         panel.spacing.x= unit(0, "mm")) 

另一种方法是使用这样的交互术语:

d %>% 
  # calculate a numeric interaction between clusters and States 
  mutate(x=as.numeric(interaction(Clusters,States))) %>%
   # calculate breaks 
   group_by(States) %>%
   mutate(xbreaks=mean(x)) %>% 
  {ggplot(.,aes(x, ncomp, color=States)) + 
    geom_point() +
    geom_line() +
    scale_x_continuous(breaks = unique(.$xbreaks), labels = unique(.$States),minor_breaks = NULL)}

花哨的{} 必须用于管道中断和标记值。

【讨论】:

  • 宾果游戏,成功了,但是我们可以在两个状态的点之间添加一点空间吗,因为它看起来 OR 第一个点刚好低于 HR,还有一个查询,我们可以用状态分别给它们着色吗?跨度>
  • @makarandkulkarni 查看我的编辑。添加一些expand = c(0.2,0.5)color=States
  • 第二个选项很容易理解,break是关键,谢谢Jimbou
猜你喜欢
  • 1970-01-01
  • 2022-06-21
  • 1970-01-01
  • 1970-01-01
  • 2018-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多