我尝试使用scatter plot
R
制作plotly
,其中的点根据渐变进行着色,最重要的是我喜欢文本注释几个点,我希望文本注释的颜色遵循相同的颜色渐变。
这是一个玩具数据:
set.seed(1)
df <- data.frame(x=rnorm(100),y=-1*log10(runif(100,0,1)),id=paste0("id",1:100),stringsAsFactors = F)
这是彩色散点图:
library(plotly)
library(dplyr)
scatter.plot <- plot_ly(type='scatter',mode='markers',x=~df$x,y=~df$y,color=~df$y,colors=c("blue","red"),showlegend=FALSE) %>%
layout(xaxis=list(title="Effect Size",zeroline=F),yaxis=list(title="Significance",zeroline=F))
然后,我尝试添加文本注释。
首先,我要创建注释数据:
ann.df <- df[sample(100,5,replace = F),]
然后我尝试添加注释文本:
scatter.plot <- scatter.plot %>% layout(annotations = list(x=ann.df$x,y=ann.df$y,text=ann.df$id,xref="x",yref="y",showarrow=T,arrowhead=5,arrowcolor=ann.df$y,ax=20,ay=-40,colors=c("blue","red"),font=list(size=15,color=ann.df$y,colors=c("blue","red"))))
知道如何根据df$y
使用c("blue","red")
渐变来使文字变为彩色吗?
答案 0 :(得分:2)
我不确定如何使用plotly
实现此目的。也许有人会有更好的想法,但与此同时,通过简单地使用ggplotly
获得你想要的东西可能会更容易。
你可以试试这个:
a <- ggplot(data = df, aes(x = x, y = y, color = y, label1 = x, label2 = y)) +
geom_point() +
theme_bw() +
scale_color_continuous(low = "blue", high = "red")
b <- a +
geom_text(data = ann.df, aes(x=x, y=y, label = id, color = y), hjust = 0, nudge_x = 0.05)
ggplotly(b, tooltip = c("label", "label1", "label2"))