R 如何在ggplot2中添加轴标签而不中断?

R 如何在ggplot2中添加轴标签而不中断?,r,ggplot2,axis-labels,R,Ggplot2,Axis Labels,我有两个变量(V1,V2),我需要在一个简单的散点图中相互绘制。某些行缺少V1或V2,因此将不包括在绘图中,但这些行中的其余信息仍值得关注。 因此,我尝试用数据范围之外的值替换NAs,并在轴上添加“NA”标签,但“断开”和“标签”长度相同的要求会导致额外的网格线 是否可以在不中断的情况下使用轴标签?感谢您的建议 很抱歉,我不能发布图片来说明我的问题,因为我是stackoverflow的新手。希望下面的代码和链接就足够了 # Simulated example data library(ggplo

我有两个变量(V1,V2),我需要在一个简单的散点图中相互绘制。某些行缺少V1或V2,因此将不包括在绘图中,但这些行中的其余信息仍值得关注。
因此,我尝试用数据范围之外的值替换NAs,并在轴上添加“NA”标签,但“断开”和“标签”长度相同的要求会导致额外的网格线

是否可以在不中断的情况下使用轴标签?感谢您的建议

很抱歉,我不能发布图片来说明我的问题,因为我是stackoverflow的新手。希望下面的代码和链接就足够了

# Simulated example data
library(ggplot2)
set.seed(112)
DF<-data.frame(V1=rnorm(20,10,4))
DF$V2<-DF$V1+rnorm(20,0,1)
DF[sample(1:dim(DF)[1],2),]$V1<-NA
DF[sample(1:dim(DF)[1],2),]$V2<-NA

# plot with NA rows removed
ggplot(DF,aes(x=V1,y=V2))+geom_point()+theme_bw()

# substitute NAs with value outside data range
DF$WasNA<-apply(DF,1,function(x)any(is.na(x)))
DF[is.na(DF$V1),]$V1<- -1
DF[is.na(DF$V2),]$V2<- -1
(p<-ggplot(DF,aes(x=V1,y=V2,colour=WasNA))+
    geom_point()+
    scale_colour_manual(values=c("black","grey70"))+
    theme_bw())
p+
    scale_x_continuous(breaks=c(-1,ggplot_build(p)$layout$panel_params[[1]]$x.major_source),labels=c("NA",ggplot_build(p)$layout$panel_params[[1]]$x.labels))+
    scale_y_continuous(breaks=c(-1,ggplot_build(p)$layout$panel_params[[1]]$y.major_source),labels=c("NA",ggplot_build(p)$layout$panel_params[[1]]$y.labels))
#模拟示例数据
图书馆(GG2)
种子集(112)

DF如果使用带有背景网格的绘图设计,那么我认为在
NA
位置需要一条网格线。否则情节看起来会很奇怪

所以我的建议是去掉次要的网格线。这就消除了不应该出现的奇怪的附加行的问题

p + scale_x_continuous(breaks=c(-1, ggplot_build(p)$layout$panel_params[[1]]$x.major_source),
                       labels=c("NA", ggplot_build(p)$layout$panel_params[[1]]$x.labels)) +
    scale_y_continuous(breaks=c(-1, ggplot_build(p)$layout$panel_params[[1]]$y.major_source),
                       labels=c("NA", ggplot_build(p)$layout$panel_params[[1]]$y.labels)) +
    theme(panel.grid.minor = element_blank())


如果需要更多的轴线,可以始终定义额外的打断(例如在位置2.5、7.5、12.5处),并为它们提供一个空标签。这将模拟次要网格线,但恰好位于您想要的位置。

看起来您需要一种绘图方法来帮助显示ggplot中缺少的值?房间里有一个geom可以这样做-


#模拟示例数据
图书馆(GG2)
种子集(112)

DF您可以通过将标准网格线的主题元素设置为空,然后使用
geom_vline
geom_hline
仅在需要的地方创建网格线,从而删除标准网格线。另一种选择是使用中的
geom_miss_point
,以更自动化的方式在绘图中包含缺失的数据。另请参阅。