【问题标题】:Trying to place certain points over others试图将某些点置于其他点之上
【发布时间】:2020-10-16 04:46:11
【问题描述】:

我只是想突出显示某些数据点(图像中的红色数据点),而不是其他数据点,分别代表预期的上学年数和学习调整的上学年数。我要强调的数据点是针对撒哈拉以南非洲的美国主要出口市场——有 5 个。我需要这些点出现在其他点之上,因为它们是我要强调的与世界其他地区和其他 SSA 国家。我已经尝试对数据进行子集化,并使用额外的 geom_point 代码将这 5 个点分层。

如果有人可以帮助我,我将不胜感激。Learning-adjusted vs. expected (ROW vs SSA)

LAYvsEY<-ggplot(HC,aes(expected,learning,label=HC$`Country Name`))+
  geom_point(aes(fill=Comparison),pch=21,size=10)+
  labs(x="Expected Years of School",y="Learning-Adjusted Years of School")+
  ggtitle("Learning-adjusted Education vs. Expected Years of Schooling",subtitle="Sub-Saharan Africa vs. ROW")+
  stat_smooth(method="gam",se=TRUE,color="navy",show.legend=FALSE)+geom_text(check_overlap=TRUE,family="serif")+theme_stata(base_size=12,base_family="serif")+
  guides(color=guide_legend(override.aes=list(size=7)))+scale_y_continuous(breaks=c(2,4,6,8,10,12))+
  theme(legend.title=element_blank(),legend.position=c(0.12,0.88),
        legend.background=element_rect(colour=NA,fill=NA),
        panel.border=element_rect(color="black",fill="NA"),
        plot.subtitle=element_text(face="italic"))+
  scale_fill_manual(values=c("#A6CEE3","#B2DF8A","indianred"),breaks=c("Rest of World","Sub-Saharan Africa","Primary SSA Export Market"))

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    有几个选项可以帮助你,在这个答案中解释 - controlling order of points in ggplot2 in R?

    您可以尝试根据其他答案创建另一个geom_point,或者事先安排数据框以将您要突出显示的值放在最后。

    顺便说一句,如果您提供一个最小的可重现示例,然后其他人可以协助编写可以工作的代码 (How to make a great R reproducible example),可能会更容易提供帮助。尝试调整代码以使其在没有原始数据的情况下工作可能有点困难。

    根据您的评论,这里有一个示例,看看什么是有效的:更改原始数据中项目的顺序适用于这个小示例。

    library(dplyr)
    library(ggplot2)
    
    # Carb values of 1 behind others
    ggplot(mtcars, aes(mpg, wt, colour = as.character(carb))) +
      geom_point(size = 20)
    
    # Arrange so that 1 is last
    mtcars2 <- mtcars %>% arrange(desc(carb))
    
    # Now value of 1 is on top of others
    ggplot(mtcars2, aes(mpg, wt, colour = as.character(carb))) +
      geom_point(size = 20)
    

    如果您想在代码中尝试,可以尝试更改 ggplot 调用中数据的顺序。

    # Potential change for your code
    LAYvsEY<-ggplot(HC %>% arrange(desc(Comparison)), aes(expected,learning,label=HC$`Country Name`))
    

    【讨论】:

    • 感谢您的帮助。我尝试使用您在发布之前提供的链接中的方法,但无法使其正常工作。我还尝试添加另一个 geom_point——这也不起作用。我会尝试提供一个最小的可重现示例,但我担心这些过于简单化,当我尝试将它们转换为我的代码时,它们不起作用。与您提供的链接中的示例非常相似。
    • 好的,尝试了一个可能在您的代码中起作用的小调整
    • 当我尝试使用排列功能时,各个国家/地区的分类不再正确。我可能应该更清楚一点的是,比较变量只是我正在使用的数据文件中的一个字段,它将国家分类为撒哈拉以南非洲、世界其他地区或主要 SSA 市场,后者是我要强调的。有没有办法使用安排功能将主要 SSA 市场领先于其他市场?
    • 啊,你最后需要“主要 SSA 出口市场” - 可以试试这个HC %&gt;% arrange(desc(Comparison)) 它应该希望重新安排将所有这些项目放在最后并放在其他点之上。重新排列不应更改任何其他列中的分类。
    • 当我这样做时,这些国家/地区的分类不再正确。例如,我试图强调的国家之一加纳被归类为世界其他地区。我认为这可能与手动图例有关,但即使我把它拿走,国家仍然是错误的。
    猜你喜欢
    • 2019-07-09
    • 1970-01-01
    • 2020-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    相关资源
    最近更新 更多