如何设置文本以在工具提示上显示货币(使用plot_ly NOT ggplotly)?

时间:2019-07-11 03:24:42

标签: r plot plotly r-plotly

据我调查,生成绘图对象时需要设置“文本”参数,然后将此“文本”参数称为工具提示。

数据:

ha <- structure(list(periodo = structure(c(2L, 2L, 2L, 2L, 2L, 2L), .Label = c("2017", 
"2016"), class = c("ordered", "factor")), ecommerce = structure(c(2L, 
2L, 2L, 2L, 2L, 2L), .Label = c("falabella", "ripley", "linio"
), class = c("ordered", "factor")), marca = c("samsung", "samsung", 
"lg", "lg", "samsung", "lg"), producto = c("samsung tv led hd 32'' 32j4000", 
"samsung smart tv led fhd 48\"\" 3d 48j6400", "lg smart tv led 43'' full hd 43lh5700", 
"lg smart tv led 49'' full hd 49lh5700", "samsung smart tv 50ju6500 led uhd 50\"\" - negro", 
"lg smart tv led 49\"\" ultra hd tv 49uh6500"), precio.antes = c(999, 
2799, 1649, 1999, 3699, 2799), precio.actual = c(799, 1999, 1249, 
1699, 2399, 2199), pulgadas = c(32, 48, 43, 49, 50, 49), rango = c("S/.500 -\r\n S/.1500", 
"S/.1500 -\r\n S/.2500", "S/.500 -\r\n S/.1500", "S/.1500 -\r\n S/.2500", 
"S/.1500 -\r\n S/.2500", "S/.1500 -\r\n S/.2500"), descuento = c(-0.2002002002002, 
-0.285816362986781, -0.242571255306246, -0.150075037518759, -0.351446336847797, 
-0.214362272240086)), row.names = c(NA, 6L), class = "data.frame")

在ggplotly中,text参数放置在aes()函数内部。

使用plot_ly时,我将其放置在此处:

p <- plot_ly(ha, x = ~periodo, y = ~precio.actual, color = ~ecommerce,colors = c("#BED800", "#802D69", "#FF5500"), text = sprintf("S/ %s", comma(~precio.actual)), textinfo= "text", hoverinfo = "text") %>%
  add_boxplot() %>%
  layout(boxmode = "group") %>% 
  config(displayModeBar = FALSE) 

p

上面的代码对格式化工具提示无效。

显示工具提示,但不需要货币格式。 例如,它应该是S / 2,399,而不是2399。

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以通过传递layout列表来格式化hoverformat中的y变量,该列表采用sprintf之类的格式字符串。

plot_ly(ha, x = ~periodo, y = ~precio.actual, color = ~ecommerce, 
        colors = c("#BED800", "#802D69", "#FF5500")) %>%
    add_boxplot() %>%
    layout(yaxis = list(
        hoverformat = '$,.2f'
    )) %>% 
    config(displayModeBar = FALSE) 

plotply plot with formatted hoverinfo

如果想发烧友,可以使用hovertemplate。这里有很多示例:https://plot.ly/r/hover-text-and-formatting/