在 R 中的 onRender() htmlWidgets 上更改散点图中的线条粗细和不透明度
Changing line thickness and opacity in scatterplot on onRender() htmlWidgets in R
我希望使用 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)
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)
我希望使用 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)
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)