【问题标题】:Draw circles around points belonging to a factor level in ggplot围绕属于ggplot中因子水平的点绘制圆圈
【发布时间】:2018-10-22 06:20:34
【问题描述】:

上一篇文章描述了如何在 ggplot 中超过给定值的点周围绘制红色圆圈。我想对异常检测结果做同样的事情,但是在属于给定因子水平的点周围画圈。

如何更改此代码以允许围绕给定因子水平绘制圆圈?

ggplot(mtcars, aes(wt, mpg)) + 
  geom_point() +
  geom_point(data=mtcars[mtcars$mpg>30,],
             pch=21, fill=NA, size=4, colour="red", stroke=1) +
  theme_bw()

【问题讨论】:

    标签: r ggplot2 plot anomaly-detection


    【解决方案1】:

    您只需要先绘制所有点,然后仅绘制圆圈,将数据减少到您想要突出显示的因子水平。这能解决您的问题吗?

    ggplot() + 
          geom_point(data=iris, aes(Sepal.Length, Sepal.Width)) +
          geom_point(data=iris[iris$Species %in% c("setosa"),], aes(Sepal.Length, Sepal.Width),
                     pch=21, fill=NA, size=4, colour="red", stroke=1) +
          theme_bw()
    

    请注意,我更改了数据集,因为我需要数据中的一个因素来向您展示它是如何工作的。

    【讨论】:

      【解决方案2】:

      假设您感兴趣的“因子水平”是10.4 的值mtcars$mpgmtcars$mpg 是一个数值向量,所以你首先要把它转换成一个因子。

      mtcars$mpg <- as.factor(mtcars$mpg)
      

      然后您可以使用之前使用的相同代码来处理大于限制的值,只是这次条件是属于因子级别10.4

      ggplot(mtcars, aes(wt, mpg)) + 
      geom_point() +
        geom_point(data=mtcars[mtcars$mpg %in% 10.4, ],
                   pch=21, fill=NA, size=4, colour="red", stroke=1) +
        theme_bw()
      

      请注意,mtcars$mpg 到因子的转换不是必需的,并且代码将以相同的方式在数值向量上运行。我转换了它,因为您的问题是关于“因素水平”。

      另请注意,如果您不处理因子水平,而只是处理与某个数字匹配的值,您可以使用:

      ggplot(mtcars, aes(wt, mpg)) + 
        geom_point() +
        geom_point(data=mtcars[mtcars$mpg == 10.4, ],
                   pch=21, fill=NA, size=4, colour="red", stroke=1) +
        theme_bw()
      

      因为你现在只测试平等而不是appartenance。

      【讨论】:

        【解决方案3】:

        我最近尝试使用上述方法来突出显示具有因子轴的点子集。不幸的是,包含第二个子集geom_point 调用似乎重新排序了轴。我可以通过使用gghighlight 包来避免这个问题。

        ggplot(mtcars, aes(x = cyl, y = mpg, color = as.factor(carb))) + 
          geom_point() + 
          gghighlight(carb == 2, use_direct_label = FALSE, unhighlighted_colour = NULL) +
          geom_point(pch=21, fill=NA, size=4, colour="black", stroke=0.5) 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-06-06
          • 2013-06-19
          • 1970-01-01
          • 1970-01-01
          • 2021-05-26
          • 1970-01-01
          • 2015-07-21
          • 2022-01-20
          相关资源
          最近更新 更多