【问题标题】:ggplot2 - geom_tile border renderingggplot2 - geom_tile 边框渲染
【发布时间】:2015-11-02 01:01:48
【问题描述】:

我希望渲染 2 个具有不同单元格边框长度的网格,以说明如何处理单元格重叠量的差异(聚合数据)。

考虑以下 ggplot2 图:

使用以下代码制作:

library("ggplot2")
library("gtools")

big_cell_size = 1
small_cell_size = 0.3
width = 4

make_cell_data <- function(cell_size) {
  n_cells = width / cell_size
  vals = seq(from = cell_size / 2, to = width, by = cell_size)
  perms <- permutations(length(vals),2, v=vals)
  x_vals <- append(perms[,1], vals)
  y_vals <- append(perms[,2], vals)
  data.frame(x = x_vals, y = y_vals)
}

p <- ggplot(data = make_cell_data(big_cell_size), aes(x, y))
p <- p + labs(x="", y="")

p <- p + geom_tile(data = make_cell_data(big_cell_size), alpha=0, color="black", width=1, height=1)
p <- p + geom_tile(data = make_cell_data(small_cell_size), alpha=0, color="darkorange", width=0.3, height=0.3, linetype="35")

p <- p + theme(aspect.ratio=1)
p

我使用 geom_tile 是因为在使用 geom_raster 时,似乎没有办法让单元格透明。

我的问题:

  • 是否可以在 geom_raster 上设置 alpha?
  • 我为橙色网格使用了一条虚线,因为两个网格中的一些线重叠,我想要一种同时显示“两者”的方法。但是,正如您所见,所有不在橙色网格外边界上的单元格都有不规则的图案。那是因为每个图块的渲染都没有考虑那里是否已经有一条线;所以线条被渲染两次,图案略微偏移。有没有办法解决这个问题?
  • 我使用虚线的全部原因是我找不到使线条(边框)粗于 1 像素的方法。有没有办法渲染一定宽度的线条?
  • 是否有其他可视化设计模式来解决经常出现的几何图形之间重叠线的问题?
  • 是否有一种更简洁的方法来生成包含数字向量的所有排列的矩阵,包括“自排列”? gtools.permutations 不包括那些,所以现在我认为应该是单行代码的是 5 行。

【问题讨论】:

  • 什么是自排列?
  • 对不起,我不知道正确的术语 - 我的意思是,给定 c(1,2),结果不仅应该有 (1,2) 和 (2,1),而且(1,1) 和 (2,2)。

标签: r ggplot2


【解决方案1】:

您有很多问题都包含在一个问题中,因此最好将它们分解为不同的问题。关于想要制作你号码的不同组,这里有两种来自gtools的方法应该可以实现你想要的。

gtools::combinations(3,2,letters[1:3],repeats=TRUE)

产量

     [,1] [,2]
[1,] "a"  "a" 
[2,] "a"  "b" 
[3,] "a"  "c" 
[4,] "b"  "b" 
[5,] "b"  "c" 
[6,] "c"  "c"

gtools::permutations(3,2,letters[1:3],repeats=TRUE)

产量

[,1] [,2]
 [1,] "a"  "a" 
 [2,] "a"  "b" 
 [3,] "a"  "c" 
 [4,] "b"  "a" 
 [5,] "b"  "b" 
 [6,] "b"  "c" 
 [7,] "c"  "a" 
 [8,] "c"  "b" 
 [9,] "c"  "c" 

【讨论】:

  • 谢谢,我误解了repeats参数。回复:多个问题 - 由于第一对在同一个潜在问题上的角度确实不同,我想我不会质疑垃圾邮件 4 个不同的相似但略有不同的问题。最后一个是我打字时的事后想法。但是,是的,你是对的。
猜你喜欢
  • 2013-05-02
  • 2011-02-19
  • 2016-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-11
  • 2013-10-23
相关资源
最近更新 更多