【发布时间】:2020-03-30 07:31:52
【问题描述】:
我希望根据我不知道其长度的数据集创建动态数量的图表。有一天它会长 2 又长 20 .. 我想为 dygraphs 或 plotly 使用相同的代码,所以不想在 plotly 中使用子图作为选项..
我已经创建了以下内容,但它不会循环情节方面,或者如果我在情节部分中输入一个 for 循环然后将其全部执行 4 X,然后情节名称是一个问题,因为它有重复.. 当你运行你可以看到显示问题的打印语句..
关于如何让这段代码为每行数据创建 1 个图表有什么想法吗?
shinyServer(function(input, output) {
# Insert the right number of plot output objects into the web page
############################# graph data###################
observe({BRANDslotpcp()})
BRANDslotpcp<-reactive({
slot_id<-c("a-slot1","b-slot0")
nga_diagnostic_code<-c("BT","XT")
nga_color<-c("black","red")
expr_1<-c(10,20)
period_date<-c("2019-10-01","2019-10-01")
a<-data.frame(slot_id,nga_diagnostic_code,nga_color,expr_1,period_date)
return(a)
})
############################slot options #########################
slotdrop<-eventReactive(BRANDslotpcp() ,{
req(BRANDslotpcp())
slot1a<- unique(BRANDslotpcp()$slot_id)
# print(slot1a)
# slot1<- slot1a[order(slot1a,decreasing=TRUE),]
# print(slot1a)
slot1<-data.frame(slot1a)
# print(slot1[2,1])
return(slot1)
#(slot1)
})
###################################
#observeEvent(slotdrop(),{
observe({
for (i in 1:nrow(slotdrop())){
plotname2 <- paste0("pcpslotbrandenburgplot", slotdrop()[i,1])
#
print(i)
print("i")
local({
output[[plotname2]] <- renderPlotly ({
myi<-i
#for (i in 1:nrow(slotdrop())){
plotname1 <<- paste0("pcpslotbrandenburgplot", slotdrop()[myi,1])
print("test")
print(plotname1)
# plotname <- paste0("pcpslotbrandenburgplot", slotdrop()[i,1])
a<-slotdrop()[myi,1]
print("a")
print(a)
#View(BRANDslotpcp())
dataname<- BRANDslotpcp()[BRANDslotpcp()$slot_id == a,]
print(dataname)
print( "dataname")
plot_ly(dataname, x = substring(as.character(dataname$period_date),0,10), y = dataname$expr_1,
type = 'bar',name=dataname$nga_diagnostic_code,
text =~paste(dataname$expr_1,"-",dataname$nga_diagnostic_code),
textposition = 'inside',
#textinfo = 'count',
insidetextfont = list(color = '#000000'),
marker = list(color = dataname$nga_color,line = list(color = '#FFFFFF', width = 1)),
showlegend = FALSE) %>%
config(displayModeBar = F)%>%
#layout(yaxis = list(title = 'Count'), barmode = 'stack')
layout(title = plotname1 ,margin = list(b = 160),xaxis = list(title = "", tickangle = 90), yaxis = list(title = 'Count'), barmode = 'stack')
# }
})
})
output$plots <- renderUI({
plot_output_list <- lapply(1:nrow(slotdrop()), function(i) {
plotname <- paste0("pcpslotbrandenburgplot", slotdrop()[i,1])
print("plotname here")
print(plotname)
plotlyOutput(plotname, height = 280, width = 550)
})
print(plot_output_list)
do.call(tagList, plot_output_list)
})
}
})
})
【问题讨论】:
-
您没有提供任何 UI 代码 - 请编辑并查看 this。
标签: r dynamic shiny plotly r-plotly