如何平滑 geom_link 中路径的颜色?

How to smooth the colour of paths in geom_link?

我正在尝试使用 ggforce 包中的 geom_link 在两点之间绘制一些线段。我试过遵循 documentation,但我的路径颜色参差不齐且不平滑。我希望有人可以帮助我处理我的代码,这样我就可以解决这些问题。下面是一个例子。

library(tidyverse)
library(ggforce)

dat <- data.frame(
  team = paste("Team", LETTERS[1:10]),
  x1 = runif(10, -0.2, 0.3),
  x2 = runif(10, -0.2, 0.3),
  y1 = runif(10, -0.2, 0.3),
  y2 = runif(10, -0.2, 0.3),
  col = c("#690014", "#03244d", "#004834", "#001E4C", "#000000", "#c41230",
          "#CC0000","#000000", "#005DAA", "#00274c")
)

ggplot(dat) +
  geom_link(aes(x = x1, xend = x2, y = y1, yend = y2, colour = col,
                alpha = stat(index), size = stat(index)), show.legend = FALSE) +
  scale_colour_identity()

您的代码很好(实际上,它或多或少与文档完全匹配)。

问题似乎出在用于显示或保存绘图的图形设备上。如果您使用最新版本的 RStudio 进行分析,您可以在设置中将图形设备更改为 AGGGlobal Options -> General -> Graphics -> Backend.

现在应该可以正常渲染,包括保存时。

如果你不使用 RStudio 或者不想更改设置,你可以直接使用 RAGG 包:

library(tidyverse)
library(ggforce)
library(ragg)

dat <- data.frame(
  team = paste("Team", LETTERS[1:10]),
  x1 = runif(10, -0.2, 0.3),
  x2 = runif(10, -0.2, 0.3),
  y1 = runif(10, -0.2, 0.3),
  y2 = runif(10, -0.2, 0.3),
  col = c("#690014", "#03244d", "#004834", "#001E4C", "#000000", "#c41230",
          "#CC0000","#000000", "#005DAA", "#00274c")
)

agg_png("example_agg_plot.png", width = 1000, height = 500, res = 144)
ggplot(dat) +
  geom_link(aes(x = x1, xend = x2, y = y1, yend = y2, colour = col,
                alpha = stat(index), size = stat(index)), show.legend = FALSE) +
  scale_colour_identity()
invisible(dev.off())