条形图图例中的百分号,使用闪亮的plotly

时间:2018-12-19 09:31:38

标签: r shiny plotly r-plotly

我正在R-Shiny中使用plotly包来绘制条形图。问题是百分号没有显示在legend中。

图例应使用以下代码生成:

data1<- data[,list('MW (%)'=sum(as.numeric(Markw))/mw.g),by=Best]
data2<- data[,list('EL (%)'=sum(as.numeric(`EL absolut`))/EL.g),by=Best]
data3<- data[,list('VaR (%)'=sum(`VaR absolut`)/Var.g),by=Best]
.
.
.

我没有找到任何option来在图例中显示(%)。我什至尝试了%的Unicode字符,但是没有成功。 知道解决办法是什么吗?

整个代码确实很大,如果一个剂量还不知道答案,那么它实际上并没有真正帮助找到解决方案。每个人都可以构建一个最小的示例,其中一个列名为:“ MW(%)” 但是,server.R

中的情节部分
 output$plot <- renderPlotly({
    d.plot<-data.frame(dataset())
    # make traces:
    x<- d.plot[,1]
    y1<- d.plot[,2]*100
    y2<- d.plot[,3]*100
    y3<- d.plot[,4]*100

  #make the plot data frame:
    pl.d<- data.frame(x,y1,y2,y3)
  #define the margin
    m <- list(
      b = 200
      #autoexpand = TRUE
    )
  #plot
    plot_ly(pl.d, x = ~x, y = ~y1, type = 'bar', name = colnames(d.plot)[2], marker = list(color = "#26478A"),
            height=800) %>%
      add_trace(y = ~y2, name = colnames(d.plot)[3], marker = list(color = "#FF6600")) %>%
      add_trace(y = ~y3, name = colnames(d.plot)[4], marker = list(color = "#7E182F")) %>%
      layout("title" = colnames(d.plot)[1],
             xaxis = list(title = "", tickangle = 65,tickfont  = list(family= "Arial",size = 14),
                          margin = m
                          ), 
             yaxis = list(title = "",ticksuffix = "%"),
             barmode = 'group'
             #margin = m
             ) 
})

2 个答案:

答案 0 :(得分:1)

您将需要检查传递给nameplot_ly的{​​{1}}争论的内容:

add_trace

enter image description here

示例source

编辑: 在上面的示例中,我想指出的是,这与plotly无关。 您描述的行为的原因是,library(plotly) Animals <- c("giraffes", "orangutans", "monkeys") SF_Zoo <- c(20, 14, 23) LA_Zoo <- c(12, 18, 29) data <- data.frame(Animals, SF_Zoo, LA_Zoo) p <- plot_ly(data, x = ~Animals, y = ~SF_Zoo, type = 'bar', name = 'MW (%)') %>% add_trace(y = ~LA_Zoo, name = 'EL (%)') %>% layout(yaxis = list(title = 'Count'), barmode = 'group') p 函数默认情况下使用data.frame()函数来检查语法上有效的名称。 您可以通过在对make.names()的呼叫中设置check.names=FALSE来禁用此选项。

请参阅以下内容:

data.frame()

我希望这有助于澄清。

答案 1 :(得分:0)

实际上我并没有真正更改代码。由于上述答案,我意识到问题出在

d.plot<-data.frame(dataset())

我只是举例而已

name = colnames(d.plot)[2]

进入

name = colnames(dataset())[2],

其中dataset()data.table

换句话说,data.frame替换为data.table