R ggplot2六边形散点图绘图有bug?

3
我在使用R环境下的ggplot2创建hexbin密度图时,总是会看到一些奇怪的白色水平虚线,它们似乎出现在垂直相邻六边形之间的边框上。这种情况在不同电脑、不同版本的MS Windows和不同的显卡驱动程序上多次复现,这明显是一个(bug)问题。我不知道如何摆脱这些虚线。 下面是显示问题的图表以及生成该图表的代码。 这是一个已知问题吗?有没有什么提示可以解决这个问题?非常感谢您的帮助!
## Load libraries
library(ggplot2)
library(hexbin)

## Create some data
set.seed(222)
myx <- data.frame(x = 0.4 + rnorm(10000, mean = 0, sd = 0.1))
myy <- data.frame(y = 0.5 + rnorm(10000, mean = 0, sd = 0.1))
MyData <- data.frame(xvariable=myx$x*100, yvariable=myy$y*100)

## Prepare the plot window
dev.off(2)
windows.options(width=6, height=6)
op <- par(mfrow = c(1,1))
op <- par(oma = c(0,0,0,0) + 0.1,
          mar = c(5.1, 5.1, 4.1, 2.1))

## Creaate the plot
ggplot(MyData, aes(x=xvariable, y=yvariable) ) +
  geom_hex(bins=66) +
  xlim(0, 100) +
  ylim(0, 100) +
  ggtitle("My plot") +
  scale_fill_continuous(type = "viridis") +
  theme_bw() +
  theme(plot.title = element_text(color="black", size=17, face="bold"),
        axis.title.x = element_text(color="black", size=17, face="bold"),
        axis.title.y = element_text(color="black", size=17, face="bold"),
        axis.text=element_text(color="black", size=15, face="bold"),
        legend.title = element_text(color = "black", size = 15), 
        legend.text = element_text(color = "black", size=12),
        legend.position = c(0.9,0.2), legend.direction = "vertical")

4
这是R绘图画布的问题,不仅仅与ggplot2hexbin有关。实际上,如果我运行您的代码并调整绘图窗口大小,线条会移动、数量会改变或完全消失,类似于其他光栅图像的伪影。当我将其保存为PDF时,这些线条总是丢失的(在我的测试中)。如果您能够切换到基于矢量的图形格式(例如pdf、svg),那么也许这是您前进的最佳方式。 - r2evans
2个回答

0

我也遇到了这个问题,使用的是RStudio版本1.4.1717 "Juliet Rose" (df86b69e, 2021-05-24) for Windows。如果我使用geom_hex(),看起来就像是白色线条横跨在“Plots”选项卡上。如果我逐像素(垂直方向)调整输出窗口的大小,这些线条就会消失。

也许一开始就有太多的六边形格子,分辨率导致间隙出现。

之前 enter image description here

之后 enter image description here


0

看起来如果你将文件保存为pdf,然后将其转换为图像,那么就不会有线条了。

enter image description here


2
谢谢你们两位!我使用了ggsave()函数,它可以生成漂亮的pdf文件(没有定制的错误)。但是由于我需要一个矢量格式来将图形插入到Word文档中,所以我将图形导出为wmf格式。但是生成的wmf文件仍然显示错误。导出到svg完美地工作,但是Word 2016既不能处理svg文件,也不能导入基于矢量的pdf文件。因此,目前唯一的方法是将其导出为pdf,对图形进行快照,并将其作为位图图像复制到Word中。有没有办法最终得到一个Word可以处理的矢量格式文件呢? - M. Brink

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接