Reputation: 43
I am new to R Script and coding, just inherited some R Code that I which plots perfectly fine and gives the correct results. I want to have the ability to show the x and y values when a user hovers the mouse cursor over the line.
I have found a link to a articles that describe how to carry out the necessary step but having no luck at all..
[url=" https://www.r-graph-gallery.com/124-change-hover-text-in-plotly/"]
library(dplyr)
library(ggplot2)
library(survival)
library(survminer)
library(grid)
library(gridExtra)
library(plotly)
pc <- dataset
fstat <- pc %>% mutate(fstatus = case_when(OUTCOMETYPE=="Revised" ~ 1,TRUE ~ 0))
pmpa <- fstat %>% select(PRIMARYPROCEDUREID,PRIMARYTOOUTCOMEYEARS,fstatus,OUTCOMETYPE)
if(nrow(pmpa) < 4){
d <- pmpa %>% select(PRIMARYPROCEDUREID,PRIMARYTOOUTCOMEYEARS,OUTCOMETYPE) %>% mutate(INSUFFICIENTDATA = "Summary Results")
h = head(d[,2:4])
grid.table(h)
}else{
fit <- survfit(Surv(PRIMARYTOOUTCOMEYEARS,fstatus)~1,data = pmpa)
ggsurv <- ggsurvplot(fit,
ylab="Patient Analysis",
xlab="Time (Years)",
break.time.by = 1,
xlim = c(0,max(fit$time)),
surv.scale = "percent",
legend.title = "Kaplan-Meier",
legend.labs = "",
risk.table = TRUE,
fontsize = 3,
font.tickslab = c(10, "plain"),
risk.table.y.text = FALSE,
fun = "event"
)
ggsurv$plot <- ggsurv$plot + theme(plot.title = element_text(hjust = 0.5, size=18), panel.grid.major = element_line(colour ="grey90"))
ggsurv$table <- ggsurv$table + theme(plot.title = element_text(hjust = 0.5, size = 10))
ggsurv
the ability to see only the x and y co-ordinates nothing else on hoover on line chart.
Upvotes: 1
Views: 120
Reputation: 30474
You could call ggplotly on just the survival 'plot' from ggsurv (which is a ggplot object):
ggplotly(ggsurv$plot)
Also note you will get a warning:
geom_GeomConfint() has yet to be implemented in plotly.
See github issue for more details about the lack of confidence intervals: https://github.com/ropensci/plotly/issues/1404
Also - to show both the plot and table together (with the KM curve on top of the table), you can use 'subplot' with plotly. Please let me know if this is helpful.
Upvotes: 1