我希望这里的人可以帮助我,因为我无法在搜索中的任何地方找到答案。
当前,我有一个闪亮的应用程序,它仅显示投资组合的股票收益率上的数据集中的条形图。
使用以下代码创建:
portfolio = c(100,100,100,100)
my_portfolio <- data.table(EuStockMarkets)
my_portfolio$Date <- seq(as.Date('2011-01-01'),as.Date('2016-02-04'),by = 1)
my_portfolio$R_DAX <- NA
my_portfolio$R_SMI <- NA
my_portfolio$R_CAC <- NA
my_portfolio$R_FTSE <- NA
my_portfolio$Total_Return <- NA
for (i in 2:1860) {
my_portfolio$R_DAX[i] <- portfolio[1]*(my_portfolio$DAX[i]-my_portfolio$DAX[i-1])
my_portfolio$R_SMI[i] <- portfolio[2]*(my_portfolio$SMI[i]-my_portfolio$SMI[i-1])
my_portfolio$R_CAC[i] <- portfolio[3]*(my_portfolio$CAC[i]-my_portfolio$CAC[i-1])
my_portfolio$R_FTSE[i] <- portfolio[4]*(my_portfolio$FTSE[i]-my_portfolio$FTSE[i-1])
}
my_portfolio$Total_Return <- my_portfolio$R_DAX + my_portfolio$R_SMI + my_portfolio$R_CAC + my_portfolio$R_FTSE
plot_subset <- my_portfolio[2:100]
现在,我正在寻找对我来说很简单的SEEMS,但是经过大量研究后,我得到的高级解决方案并不完全适合我的问题。
我想要这样: 当我单击情节上的条形图(例如,收益最低的条形图)时,我希望在侧面显示表格,以显示投资组合中股票的日期和股价。
我查看了以下这些资源,这些资源为我提供了有关点击的很好的起点,但对于表格更新却没有太多帮助:
https://plot.ly/r/shiny-coupled-events/
https://plot.ly/r/shiny-coupled-hover-events/#new-to-plotly
Retrieving source data information from a barplot in R shiny interactively
(最后一个链接是最有用的,它为我提供了点击的x和y坐标,但是我最大的问题是:如何从该值跳到表格值?)
如果在这里不是最好的方法,那有什么替代方法?
感谢您阅读并帮助解决我的问题。任何帮助深表感谢!
答案 0 :(得分:0)
这是我要解决的方法:
我删除了该繁琐的for循环,您应该更深入地研究精彩的library(
data.table )
library(data.table)
library(plotly)
library(shiny)
library(shinydashboard)
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(),
dashboardBody(plotlyOutput("myPlot"),
dataTableOutput("myTable"))
)
server <- function(input, output) {
portfolio = c(100, 100, 100, 100)
my_portfolio <- data.table(EuStockMarkets)
my_portfolio[, Date := seq(as.Date('2011-01-01'), as.Date('2016-02-03'), by = 1)]
my_portfolio[, R_DAX := portfolio[1] * c(NA, diff(DAX))]
my_portfolio[, R_SMI := portfolio[2] * c(NA, diff(SMI))]
my_portfolio[, R_CAC := portfolio[3] * c(NA, diff(CAC))]
my_portfolio[, R_FTSE := portfolio[4] * c(NA, diff(FTSE))]
my_portfolio[, Total_Return := R_DAX + R_SMI + R_CAC + R_FTSE]
plot_subset <- my_portfolio[2:100]
output$myPlot <- renderPlotly({
plot_ly(
plot_subset,
source = "myClickSource",
x = ~ Date,
y = ~ Total_Return,
type = "bar"
)
})
SelectedBar <- reactiveVal(NULL)
observe({
myClicks <- event_data("plotly_click", source = "myClickSource")
req(myClicks)
print(myClicks)
SelectedBar(as.Date(myClicks$x))
})
output$myTable <- renderDataTable({
plot_subset[Date %in% SelectedBar()]
})
}
shinyApp(ui, server)