【问题标题】:Changing line thickness and opacity in scatterplot on onRender() htmlWidgets in R在 R 中的 onRender() htmlWidgets 上更改散点图中的线条粗细和不透明度
【发布时间】:2017-03-01 20:12:00
【问题描述】:

我希望使用 R 包 htmlwidgets 的 onRender() 函数制作一个图,其中用户可以单击一个点并绘制一条线。我现在的关键是它的工作原理是一条灰线以其默认粗细和可能的默认不透明度绘制。

但是,我一直坚持更改线条的粗细(并且可能会更改线条的不透明度,尽管它可能正在工作并且我看不到它,因为线条太细了)。我希望线条非常粗且相当透明。我尝试了几种线宽和不透明度的参数和方法(其中一些在下面注释掉了),但似乎它们并没有什么区别。有什么想法我可能会错过吗?谢谢你。

library(plotly)
library(broom)

dat <- mtcars
dat$mpg <- dat$mpg * 10

p <- ggplot(data = dat, aes(x=disp,y=mpg)) + geom_point(size=0.5)

ggplotly(p) %>%
  onRender("
           function(el, x, data) {
            // reduce the opacity of every trace except for the hover one
            el.on('plotly_click', function(e) {

              var trace1 = {
                 x: [100, 400],
                 y: [100, 400],
                 mode: 'lines',
                 //line: dict(color: 'gray', width: 100)
                 marker: {
                   color: 'gray',
                   size: 200,
                   width: 1000,
                   opacity: 0.5
                 }
              }
              Plotly.addTraces(el.id, trace1);
           })
          }
          ", data=dat)

【问题讨论】:

    标签: r ggplot2 plotly htmlwidgets


    【解决方案1】:

    opacity 需要在跟踪对象中。您的 line 对象存在一些语法问题,导致 Javascript 无法读取它。

    gp %>% onRender("
    function(el, x, data) {
    
      el.on('plotly_click', function(e) {
    
      var trace1 = {
        x: [100, 400],
        y: [100, 400],
        mode: 'lines',
        line: {
            color: 'gray', 
            width: 100
        },
        opacity: 0.8,
      }
      Plotly.addTraces(el.id, trace1);
    })
    }", data=dat)
    

    【讨论】:

      猜你喜欢
      • 2014-05-11
      • 1970-01-01
      • 2012-07-23
      • 2020-03-26
      • 1970-01-01
      • 1970-01-01
      • 2022-08-16
      • 2015-08-03
      • 1970-01-01
      相关资源
      最近更新 更多