r - ggplot2 - 突出显示选定的点和奇怪的行为

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了r - ggplot2 - 突出显示选定的点和奇怪的行为相关的知识,希望对你有一定的参考价值。

我想突出显示所选点并遇到一些奇怪的行为。首先是一些虚拟数据:

a <- 1:50
b <- rnorm(50)
mydata <- data.frame(a=a,b=b)
ggplot(mydata,aes(x=a,y=b)) + geom_point()

这工作正常。现在,为了突出显示一些要点,我添加了另一个geom_point图层:

ggplot(mydata[20:40,],aes(x=a,y=b)) + 
    geom_point() + 
    geom_point(aes(x=a[c(10,12,13)],y=b[c(10,12,13)]),colour="red")

请注意,我只显示有限范围的数据([20:40])。现在来了奇怪的行为:

ggplot(mydata[10:40,],aes(x=a,y=b)) + 
    geom_point() + 
    geom_point(aes(x=a[c(10,12,13)],y=b[c(10,12,13)]),colour="red")

更改所选范围的大小,我得到一个错误,大致翻译自德语:Error...: Arguments implying different number of rows。奇怪的是,这随所选范围而变化。 [23:40]将工作,[22:40]将不会。


英文错误是:

Error in data.frame(x = c(19L, 21L, 22L), y = c(0.28198, -0.6215,  : 
  arguments imply differing number of rows: 3, 31
答案

如果不同图层之间的数据不同,则需要为每个图层指定新数据。

对于需要不同数据的每个data=...,您可以使用geom参数执行此操作:

set.seed(1)
mydata <- data.frame(a=1:50, b=rnorm(50))
ggplot(mydata,aes(x=a,y=b)) + 
  geom_point(colour="blue") +
  geom_point(data=mydata[10:13, ], aes(x=a, y=b), colour="red", size=5)

另一答案

gghighlight的另一个解决方案:

a <- 1:50
b <- rnorm(50)
mydata <- data.frame(a=a,b=b, type = sample(letters, 50, replace = T))

library(gghighlight)
gghighlight_point(mydata, aes(x=a, y=b), label_key = type, 
                  a <= 14 & a >= 10 & b >= 0 , col="red")
另一答案

另一个选项是在geom_point中添加属性,颜色和大小的条件。然后我们分别使用scale_colour_manualscale_size_manual手动控制那些。

set.seed(1)
mydata <- data.frame(a = 1:50, b = rnorm(50))
ggplot(mydata) + 
  geom_point(aes(x = a, y = b, colour = a > 9 & a < 14, size = a > 9 & a < 14)) + 
  scale_colour_manual(values = c("blue", "red")) + 
  scale_size_manual(values =c(1, 4))+
  theme(legend.position = "none")

enter image description here

以上是关于r - ggplot2 - 突出显示选定的点和奇怪的行为的主要内容,如果未能解决你的问题,请参考以下文章

R语言ggplot2可视化:ggplot2可视化密度图(显示数据密集区域)ggplot2可视化密度图(对数坐标):log10比例的收入密度图突出了在常规密度图中很难看到的收入分布细节

R语言ggplot2可视化绘制线图(line plot)使用gghighlight包突出高亮线图的满足条件的线图设置高亮线图不显示默认自动显示的文本标签(use_direct_label)

Android:以编程方式突出显示listview中的当前选定选项

R语言ggplot2可视化分面直方图(faceting histogram)使用gghighlight包突出高亮突出每个分面中的一个分组的直方图

R语言ggplot2可视化分面直方图(faceting histogram)使用gghighlight包突出高亮突出每个分面中的一个分组的直方图

R语言ggplot2可视化时间序列数据并突出标注重要时间点数据实战:特殊节点标签标注特殊区域标注