如何使用iris数据绘制此图?

如何使用iris数据绘制此图?,r,ggplot2,grid,dataset,R,Ggplot2,Grid,Dataset,使用虹膜数据集 我想按图所示进行绘制:使用视口,散点图的宽度和高度均为0.66 我有两个问题: 一,。正如你们在第二张图中看到的,右边的图有更平滑的线条,但在第一张图的右边,我们仍然可以看到线条。如何以第一个和第二个绘图看起来完全相同的方式进行绘图 二,。如何使用栅格视口树(如viewport、pushViewport和upViewport)绘制相同的绘图 以下是我的示例代码: library(ggplot2) library(readr) library(grid) library(gridB

使用虹膜数据集

我想按图所示进行绘制:使用视口,散点图的宽度和高度均为0.66

我有两个问题:

一,。正如你们在第二张图中看到的,右边的图有更平滑的线条,但在第一张图的右边,我们仍然可以看到线条。如何以第一个和第二个绘图看起来完全相同的方式进行绘图

二,。如何使用栅格视口树(如viewport、pushViewport和upViewport)绘制相同的绘图

以下是我的示例代码:

library(ggplot2)
library(readr)
library(grid)
library(gridBase)

 head(x = iris)

  a <- ggplot(data = iris,
   aes(x=Sepal.Length, y=Sepal.Width)) + 
    geom_point()



  b <- ggplot(data = iris,
   aes(x = Sepal.Length)) + 
    geom_histogram()


  c <- ggplot(data = iris,
      aes(x = Sepal.Width)) + 
      geom_histogram() +
      coord_flip()


   # Put these graphs into one

      grid.newpage()
      pushViewport(viewport(layout = grid.layout(2, 2)))
      vplayout <- function(x, y) viewport(layout.pos.row = x, 
                                layout.pos.col = y)
      print(b, vp = vplayout(1, 1))  # key is to define vplayout
      print(a, vp = vplayout(2, 1)) 
      print(c, vp = vplayout(2, 2))

      sample_vp <- viewport(width = 0.66, height = 0.66)

      pushViewport(sample_vp)
先谢谢你

我的输出:

预期产出:


对于1来说,是的,这些线条很难看。我不知道是什么原因导致了这些问题,但由于每个条都是矩形,我认为这一定是图形上的问题。您可能可以通过设置与填充相同的直方图颜色来防止这种情况

对于2,我将玩一个冒险的游戏,不给出你想听到的答案,即如何在网格中执行这些操作,而是给你一个我认为你需要听到的答案

假设您的目标是将这些直方图作为边缘直方图显示在主面板上,您可以很容易地在拼凑中实现类似的功能

图书馆GGPLOT2 图书馆拼凑 >警告:包“补丁”是在R版本3.6.3下构建的
a1,是的,这些线条很难看。我不知道是什么原因导致了这些问题,但由于每个条都是矩形,我认为这一定是图形上的问题。您可能可以通过设置与填充相同的直方图颜色来防止这种情况

对于2,我将玩一个冒险的游戏,不给出你想听到的答案,即如何在网格中执行这些操作,而是给你一个我认为你需要听到的答案

假设您的目标是将这些直方图作为边缘直方图显示在主面板上,您可以很容易地在拼凑中实现类似的功能

图书馆GGPLOT2 图书馆拼凑 >警告:包“补丁”是在R版本3.6.3下构建的
a+1 TBH我不觉得那些台词难看。我发现它们实际上非常有助于可视化垃圾箱。¯_ツ_/“我的意思是,是的,我愿意同意你的意见,如果这些线是故意放在那里的,而不是图形设备出现故障的话。钢筋的宽度应完全相同,中间没有间隙。我很确定这在grob级别的数字上是正确的。我发现它们实际上非常有助于可视化垃圾箱。¯_ツ_/“我的意思是,是的,我愿意同意你的意见,如果这些线是故意放在那里的,而不是图形设备出现故障的话。钢筋的宽度应完全相同,中间没有间隙。我很确定这在grob层面上是正确的。
b + scale_x_continuous(breaks = NULL, name = "") + 
  plot_spacer() +
  a + 
  c + scale_x_continuous(breaks = NULL, name = "") +
  plot_layout(nrow = 2, ncol = 2, widths = c(1, 0.5), heights = c(0.5, 1))