gpt4 book ai didi

r - 保持 geom_rect 半透明区域,但有彩色轮廓

转载 作者:行者123 更新时间:2023-12-04 00:36:51 26 4
gpt4 key购买 nike

我正在尝试在 R 中使用 plotly 创建一个带有矩形的交互式绘图。

我的主要想法正在发挥作用。但是,我坚持的是让每个矩形都有一个彩色轮廓(如数据的“填充”列中所描绘的那样),但是一个完全透明的区域。

下面是 MWE 的工作原理:

library(ggplot2)
library(dplyr)
library(plotly)
set.seed(1)
data <- data.frame(Name = paste0("Name",seq(1:10)), xmin = runif(10, 0, 1), xmax = runif(10, 1, 2), ymin = runif(10, 0, 1), ymax = runif(10, 1, 2), fill = sample(c("black","purple"),10, replace=TRUE) )

p <- ggplot(data, aes(xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax, fill = NULL, colour = fill, text = Name)) + geom_rect(size = 0.3, alpha = 0.5) + scale_colour_identity() + theme_bw()
ggplotly(p, tooltip = "text") %>% layout(dragmode = "select")

我可以将鼠标悬停在每个矩形上,并向我显示数据的 Name 变量。此外,数据的填充变量决定了矩形的颜色。但是,我无法使矩形透明。

我试过了:

1) 将fill=NULL 改为fill=NA,但这会导致错误:

Error in seq.default(h[1], h[2], length.out = n) : 
'to' cannot be NA, NaN or infinite

2) 将 alpha=0.5 更改为 alpha=0.01,但这会使每个矩形的轮廓也相当透明。

是否可以仅在矩形区域完全透明的情况下创建这种类型的绘图?我真的希望保持矩形轮廓的颜色,并且能够响应不同的 alpha 值。

如果您对我有任何建议,我会很高兴听到它!

最佳答案

其实很简单。只需对 geom_rect 函数使用 fill=alpha("grey",0) 为填充参数使用透明颜色,您将获得所需的结果。

您可以通过如下方式修改代码来做到这一点

p <- ggplot(data, aes(xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax, colour = "purple", text = Name)) + geom_rect(size = 0.3, alpha = 0.5,fill=alpha("grey",0)) + scale_colour_identity() + theme_bw()
ggplotly(p, tooltip = "text") %>% layout(dragmode = "select")

输出看起来像 Output Image

关于r - 保持 geom_rect 半透明区域,但有彩色轮廓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40415139/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com