Rplotly版本4.5.2散点图图例气泡大小设置

2024-01-02

我在 R 中使用plotly 4.5.2。我创建了一个散点图,其大小取决于变量,问题是这些大小也反映在图例中,这使得它们难以阅读。

我希望我的图表保持不变,唯一的例外是图例中气泡的大小。这些气泡可以设置为全部相同大小,也可以缩放为较小的大小。重要的是,图表中的大小必须保持不变。

请在此处找到可重现的代码:

library(plotly)

data <- data.frame(name = c('test1', 'test2', 'test3', 'test4'),
                      x = c(1, 15, 90, 45),
                      y = c(9, 43, 43, 53),
                      size = c(10000, 50000, 90000, 3000),
                      colour = c("rgba(230, 42, 56, 0.3)", "rgba(76, 175, 80, 0.3)",
                                 "rgba(32, 169, 242, 0.3)", "rgba(255, 193, 7, 0.3)")
                      )

plot <- plot_ly(data = data) %>% 
  add_trace(x = ~x,
            y = ~y,
            mode = 'markers',
            type = 'scatter',
            color = ~name,
            marker = list(
              color = ~colour,               
              opacity = 1,
              showlegend=T),
            size = ~size)

谢谢


我找到了一个黑客来获得所需的输出,我将其发布在这里是为了其他人的利益。

library(plotly)

data <- data.frame(name = c('test1', 'test2', 'test3', 'test4'),
                      x = c(1, 15, 90, 45),
                      y = c(9, 43, 43, 53),
                      size = c(10000, 50000, 90000, 3000),
                      colour = c("rgba(230, 42, 56, 0.3)", "rgba(76, 175, 80, 0.3)",
                                 "rgba(32, 169, 242, 0.3)", "rgba(255, 193, 7, 0.3)")
                      )


#Ranges
xmin <- - 0.2 * max(data[['x']])
xmax <- 1.8 * max(data[['x']])
ymin <- - 0.2 * max(data[['y']])
ymax <- 1.8 * max(data[['y']])


# Sum of the size variable
sum_size <- sum(data[['size']], na.rm = TRUE)

# Decimal size
data$size <- (data[['size']]/sum_size)

# Adjust for the smallest 
data <- data %>% mutate(size = ifelse(size < 0.05, 0.05, size))

#Size Vector
size <- data$size * 100

# not used atm
min_size <- min(data$size, na.rm = TRUE)
max_size <- max(data$size, na.rm = TRUE)


# Number of unique groups
num_bubbles <- length(unique(data[['name']])) 


# Artifical data used to resolve legend sizes
data2 <- data
data2$size <- min_size
data2[['x']] <- -2 * max(-xmin,-ymin)
data2[['y']] <- -2 * max(-xmin,-ymin)

# Bind the artifial data, plotly will only plot the original and this fixes the legend size issue
data <- rbind(data, data2)

plot <- plot_ly(data = data) %>% 
  add_trace(x = data[['x']],
            y = data[['y']],
            mode = 'markers',
            type = 'scatter',
            color = data[['name']], 
            marker = list(size = 10,
                          opacity = 1,sizemin=10,sizemax =100,sizeref = 100,
                          line = list(width = 2)),size = 30,showlegend=T,
            hoverinfo = "text") %>% 
  add_trace( x = -2 * max(-xmin,-ymin) , y = -2 * max(-xmin,-ymin), type = "scatter", mode = "markers", 
             color= data[['name']], showlegend=F) %>% config(modeBarButtonsToRemove = list("sendDataToCloud","pan2d","select2d","lasso2d","zoomIn2d","zoomOut2d","autoScale2d","resetScale2d","hoverClosestCartesian","hoverCompareCartesian"), displaylogo = FALSE, doubleClick = "reset")  



plot <- layout(plot,
               title = NULL,

               xaxis = list(           

                 title = 'x',
                 range = c(xmin,xmax),
                 showgrid = F     
               ),
               yaxis = list(         
                 title = 'y',

                 range = c(ymin,ymax)
               ))

plot <- plotly_build(plot)

for(i in seq(1,num_bubbles))
{
  plot$x$data[[i]]$marker$size <- c(size[i]*10000,min(size)*10000)


}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rplotly版本4.5.2散点图图例气泡大小设置 的相关文章

  • 如何使用键盘命令中断 R 中正在运行的代码?

    如何中断 R 中正在运行的脚本 假设我遇到无限循环或其他问题 并且我想停止脚本运行 有键盘命令可以做到这一点吗 如果有帮助的话 在 Python 中是 Ctrl c 我在R中尝试过 但没有成功 自我回答 几乎是其他人的评论和答案的总结 In
  • 如何在 R 中使用别名运行系统可执行文件?

    假设我正在 R 中运行系统命令来运行executable inputfile lt path myfile txt 我该如何更换 path myfile txt在下面的命令中inputfile如下面命令所示 system executabl
  • selectInput 的动态数量

    我是闪亮的新手 所以这可能是一个非常基本的问题 我想编写一个闪亮的应用程序 其中用户输入 n 我们得到 n 个 selectInput 选项 但我无法做到这一点 基本上任何形式的 for 循环都不起作用 我尝试的代码如下 library s
  • rgdax(coinbase)数据未按预期收集数据

    我正在尝试使用rgdaxR 包用于下载一些历史价格 我设置了 API 密钥等 并尝试在过去 24 小时内加载 start lt strftime Sys time Y m dT H M SZ tz UTC end lt strftime S
  • 聚合时间

    我的数据包含 1 分钟测量值 我希望将其聚合为 5 分钟和 10 分钟 如何在 10 分钟内将 日 列的数据分组为 5 样本数据2 structure list Day c Monday Monday Monday Monday Monda
  • R中的预测和预测函数之间的区别

    两者之间有什么区别吗predict and forecast R 中的函数 如果是 在哪些具体情况下应该使用它们 Intro predict 适用于多种 R 对象 模型 基础库的一部分 forecast 对于时间序列 预测包的一部分 参见示
  • 使用 != 子集 data.table 也排除 NA

    我有一个 data table 其中有一列NAs 我想删除该列具有特定值的行 恰好是 然而 我的第一次尝试导致我失去了行NA还有 gt a c 1 NA gt x lt data table a x a 1 1 2 3 NA gt y lt
  • r - 根据第一个向量重新排序第二个向量

    寻找解决方案来执行以下操作 有两个向量 a lt c 2 1 3 4 7 6 5 9 8 10 b lt c 3 2 1 6 5 4 7 8 9 10 我想创建第三个向量 它给出向量的顺序b需要重新排序 使其顺序与a 在这种情况下我想得到
  • 在ggplot2中绘制大多边形地图的小区域

    我有一个 shapefile 我使用它在 ggplot2 中进行了强化和绘制geom polygon 我怎样才能只绘制这张地图的一小部分区域 我的完整地图看起来不错 但我的小区域很混乱 这是一个工作示例 这个小形状文件可以从以下位置获得 h
  • 根据用户输入将 n 个反应式单选按钮添加到闪亮的应用程序

    我正在尝试创建一个闪亮的应用程序 用户可以在其中从数据框中选择变量以便对数据进行子集化 输出 最终 将是包含用户子集的数据表 我需要根据用户为子集选择的变量数量创建 n 个输入框 理想情况下 输入框将是动态单选按钮 用于子集因子 我还没有开
  • 如何很好地注释 ggplot2(手册)

    Using ggplot2我通常使用geom text和类似的东西position jitter注释我的情节 然而 对于一个漂亮的情节 我经常发现手动注释是值得的 像下面这样 data2 lt structure list type str
  • 从 glmnet 获取变量选择顺序

    我一直在使用 glmnet R 包为一个目标变量 Y 数字 和 762 个协变量构建 LASSO 回归模型 我使用 glmnet 函数 然后coef fit s 0 056360 获取该特定 lambda 值的系数值 我现在需要的是变量选择
  • 有什么方法可以访问 makeActiveBinding 安装的函数吗?

    标题基本上说明了一切 如果我这样做 makeActiveBinding x function runif 2 GlobalEnv x 1 0 7332872 0 4707796 x 1 0 5500310 0 5013099 那我有什么办法
  • 拆分并保存在新的 data.frames 中

    我有一个大 data frame 144 列 我想将其分成每组 3 列 子文件或子 data frame 然后将子 data frame 保存在单独的文件中 换句话说 file1 将包含从 1 到 3 的列 file2 将包含从 6 到 9
  • R + ggplot2 - 无法分配大小为 128.0 Mb 的向量

    我有一个 4 5MB 9 223 136 行 的文件 其中包含以下信息 0 0 0 0147938 3 67598e 07 0 0226194 7 35196e 07 0 0283794 1 10279e 06 0 033576 1 470
  • dplyr::mutate 添加多个值

    网上有几个与此相关的问题dplyr Github 存储库 https github com hadley dplyr已经 并且至少有一个相关的问题 但没有一个问题完全涵盖了我的问题 我认为 在 dplyr mutate 调用中添加多列 ht
  • RQuantLib 包不适用于 R 3.5.0

    有没有其他人尝试加载 R 3 5 0 的 RQuantLib 包 我尝试过 以前有效 install packages drat dependencies TRUE drat addRepo ghrr install packages RQ
  • 使用 data() 的 R 包命名空间问题 -- 找不到数据集

    我在尝试在我自己的包中导入包 即 robfilter 时遇到了问题 我尝试使用它的方法之一 adore filter 在这一行失败 data critvals 出现错误 未找到数据集 critvals 如果我通过 require robfi
  • R中不重复的组合

    我试图获取变量元素长度为 3 的所有可能组合 虽然它部分地与combn 一起工作 但我没有完全得到我正在寻找的输出 这是我的例子 x lt c a b c d e t combn c x x 3 我得到的输出看起来像这样 1 2 3 1 a
  • 有条件地将字符串转换为特定数值

    我确信对此有一个简单的答案 但我已经扫描了堆栈溢出 但无法找到解决方案 似乎 sapply 和 ifelse 函数的组合可能可以完成这项工作 但我不确定 所以我有一个包含字符的数据框 除了一列是数值 Create dataframe whi

随机推荐

  • Node.js 与其他 Web 技术相比的优势 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • scikit learn 中的特殊性

    I need specificity对于我的分类 其定义为 TN TN FP 我正在编写一个自定义记分器函数 from sklearn metrics import make scorer def specificity loss func
  • libtool 与 ar 用于创建静态库(xcode 链接器)

    在 Mac 10 5 上使用 xcode 通过 libtool 创建静态库和通过命令行使用 ar 都会生成一个 libMainProject a 文件 但是 当尝试使用 libtool 生成的文件链接到 xcode 应用程序时 我最终会收到
  • 带星号的批量 FOR 循环

    我有这个单行 CMD 文件 TEST CMD for f in 1 2 3 4 5 6 7 8 DO ECHO f 如果我运行这个 TEST this is a test 它正确地在单独的行上回显每个参数 即 this is a test
  • 渲染良好的网络字体解决方案

    挑战 提供动态网页字体 可在所有主要浏览器 设备和操作系统上呈现可接受的效果 故事 所以我过去使用过 cufon 或 sifr 后来放弃了这两种方式 转而使用 font face 在生产中使用 font face一段时间后 我有了一个可怕的
  • 如何解决读取图像文件时IOError:损坏的数据流?

    我在 Ubuntu 11 04 下工作 我正在尝试在我的 Django 项目中使用 PIL 遗憾的是 PIL 无法加载我的图像 以下是 PIL 设置摘要 PIL 1 1 7 SETUP SUMMARY version 1 1 7 platf
  • 为什么Java char原语占用2字节内存?

    Java char 原始数据类型是 2 个字节 而 C 是 1 个字节 有什么原因吗 Thanks Java 最初设计时 预计任何 Unicode 字符都可以容纳 2 个字节 16 位 因此char and Character进行了相应的设
  • 带有 Tibco Native Libs 的 Java Webstart

    我正在尝试部署一个使用nativeTibrv 的实施通过TibrvJ图书馆使用Java 网络启动 我已经把所有的Windows都打包了dlls从内部c tibco tibrv bin放入 Jar 文件并将它们添加到nativelib中的元素
  • 在 XML/XSLT 中转义美元符号

    我正在处理使用 XSLT 转换 XML 来自遗留系统 的要求 我在处理带有美元符号的标签时遇到了问题 这就是它们在遗留系统中存储和生成的方式 示例 XML 文件的示例
  • 在 Jest 中使用 Next.Js 测试 Api

    我想使用 Jest 为我的 Api 文件编写测试用例 它使用 Next js 我尝试了很多方法 但无法获得任何文件覆盖率 ApiFile js const axios require axios import getConfig from
  • 使用 video.js 包装器启用 YouTube 播放

    好的 所以我正在尝试使用 video js 项目包装 换肤 YouTube 视频 以实现与我网站上其他视频类似的外观和感觉 现在根据您可以看到的文档here https github com videojs video js blob ma
  • Django 1.3 日志记录:未记录 500 个错误

    我正在努力让 django request 记录器按照广告宣传的方式工作 500 个错误似乎不会传播到附加到它的处理程序 在每个新项目的默认日志记录配置中 注释表示 此配置执行的日志记录是针对每个 HTTP 500 错误向站点管理员发送电子
  • phpDoc 表示法指定返回类型与参数类型相同

    想象一下以下假设的类结构 在所有 PHPdoc 提示都正确设置的情况下 这并不是一个非常罕见的场景 class BaseFilter base methods class TextFilter extends BaseFilter publ
  • 如何使用git将本地存储库复制到远程服务器?

    我正在尝试使用 git 在远程服务器中部署本地代码 这就是我所做的local文件夹我的网站 git init git add git commit m Initial commit 然后 在我的网络服务器 mkdir public html
  • jQuery 选择具有特定标题的表格单元格

    我有一个带有 标题 的表 该表使用常规 tr 标签 不是 th 我需要找到标题 Col2 然后为 Col2 下的每个单元格添加一个锚点 我可以 td contains Col2 查找标题 但数据行也可能有 Col2 我如何仅搜索第一行 然后
  • 将 robomongo 连接到 mongoDB docker 容器

    我正在运行一个NodeJS应用程序与docker 撰写 https docs docker com compose 一切正常 我可以通过连接到容器内的 Mongo 来查看所有数据 但是当我连接到机器人蒙戈 https robomongo o
  • 在 `Thread.setDefaultUncaughtExceptionHandler` 中显示一个对话框

    当我的 Android 应用程序抛出异常时 我想显示一个自定义对话框来告诉用户发生了错误 所以我使用Thread setDefaultUncaughtExceptionHandler设置全局异常处理程序 public class MyApp
  • 元素固定到视口但位于容器内

    我正在尝试建立一个网站 其侧面板位于右侧 主要内容位于左侧 主要内容已经存在并且相当复杂 侧面板是新添加的 并不总是可见 主要内容的 响应能力 应该根据侧面板是否处于活动状态而表现不同 例如 当没有侧面板时 主要内容需要从 3 列布局切换到
  • 服务器上的 Google App 脚本请求验证

    我正在开发一个add on对于 Google 文档 我想做POST request到我的网络服务器add on 我已经这样做了 但是我应该如何在服务器端验证请求是否来自我的add on仅有的 有没有csrf就像机制中Google App S
  • Rplotly版本4.5.2散点图图例气泡大小设置

    我在 R 中使用plotly 4 5 2 我创建了一个散点图 其大小取决于变量 问题是这些大小也反映在图例中 这使得它们难以阅读 我希望我的图表保持不变 唯一的例外是图例中气泡的大小 这些气泡可以设置为全部相同大小 也可以缩放为较小的大小