Plotly R 突出显示问题:当我点击一个栏时,突出显示看起来错误
Posted
技术标签:
【中文标题】Plotly R 突出显示问题:当我点击一个栏时,突出显示看起来错误【英文标题】:Plotly R Highlight Problem: When I Click on a Bar, the Hightlighting Looks Wrong 【发布时间】:2022-01-04 09:35:54 【问题描述】:我正在尝试在我的绘图中添加一个功能,以便有人可以单击一个栏并突出显示它。但是,当我尝试添加此功能时,我只能单击该栏并突出显示其中的一小部分(见下图)。我尝试在此post 中实施建议,但无济于事。将不胜感激。
这是我的代码:
number_of_debates_from_1803_1910 <- fread("~/projects/hansard-shiny/app-data/introduction/number_of_debates_from_1803_1910.csv")
number_of_debates_from_1803_1910 %>%
highlight_key() %>%
plot_ly(
x = ~decade,
y = ~no_of_debates,
type = 'bar',
text = ~paste0("Decade: ", "<b>", decade, "</b>", "\n",
"Number of Debates: ", "<b>", no_of_debates, "</b>", "\n"),
hoverinfo = "text",
marker = list(color = 'rgb(158,202,225)',
line = list(color = 'rgb(8,48,107)',
width = 1.5))) %>%
highlight(on = "plotly_click", off = "plotly_doubleclick") %>%
layout(barmode = "overlay"),
xaxis = list(title = ""),
yaxis = list(title = "")) %>%
config(displayModeBar = F)
这是我的数据:
decade,no_of_debates
1800,926
1810,2435
1820,2400
1830,7848
1840,7398
1850,8835
1860,10660
1870,14051
1880,31509
1890,31857
1900,49725
1910,5631
如果您愿意,也可以按以下方式访问:
structure(list(decade = c(1800L, 1810L, 1820L, 1830L, 1840L, 1850L), no_of_debates = c(926L, 2435L, 2400L, 7848L, 7398L, 8835L )), row.names = c(NA, -6L), class = c("data.table", "data.frame" ))
点击条形之前的绘图图片:
点击条形图后的图片:
【问题讨论】:
请通过发布dput(head(number_of_debates_from_1803_1910))
的输出分享您的数据。
这是您要查看的输出? structure(list(decade = c(1800L, 1810L, 1820L, 1830L, 1840L, 1850L), no_of_debates = c(926L, 2435L, 2400L, 7848L, 7398L, 8835L )), row.names = c(NA, -6L), class = c("data.table", "data.frame" ), .internal.selfref = <pointer: 0x5632c3fc2450>)
没错 - 这让其他人更容易复制您的数据。对于 data.table,您需要删除 .internal.selfref
。
我不确定我是否理解删除 .internal.selfref
的目的。我尝试将 csv 加载为数据框,以避免可能与 data.table 相关的问题,但是当我单击它时,我的图也有同样的问题。
但是谢谢你的复制数据提示。
【参考方案1】:
你真的很接近你的问题的解决方案。无论出于何种原因,class
对于您突出显示的数据都很重要。例如,在您的数据中,decade
的类是int
,但是,它需要是factor
。解决这个问题很简单
number_of_debates_from_1803_1910$decade <- as.factor(number_of_debates_from_1803_1910$decade)
number_of_debates_from_1803_1910 %>%
highlight_key(~decade) %>%
plot_ly(
x = ~decade,
y = ~no_of_debates,
type = 'bar',
text = ~paste0("Decade: ", "<b>", decade, "</b>", "\n",
"Number of Debates: ", "<b>", no_of_debates, "</b>", "\n"),
hoverinfo = "text",
marker = list(color = 'rgb(158,202,225)',
line = list(color = 'rgb(8,48,107)',
width = 1.5))) %>%
highlight(~decade, on = "plotly_click",off = "plotly_doubleclick") %>%
layout(barmode = "overlay")
【讨论】:
非常感谢。我没有意识到数据类型在这里如此重要!以上是关于Plotly R 突出显示问题:当我点击一个栏时,突出显示看起来错误的主要内容,如果未能解决你的问题,请参考以下文章