我正在R-Shiny中使用plotly包来绘制条形图。问题是百分号没有显示在中。
图例应使用以下代码生成:
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
)
})
答案 0 :(得分:1)
您将需要检查传递给name
和plot_ly
的{{1}}争论的内容:
add_trace
示例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