簡體   English   中英

ggplot2-geom_tile邊框渲染

[英]ggplot2 - geom_tile border rendering

我打算渲染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行。

您將許多問題合而為一,因此最好將它們分解成不同的問題。 考慮到要對號碼進行不同的分組,這是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" 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM