颜色R通过渐变绘制文本注释

时间:2018-05-06 18:38:19

标签: r annotations plotly r-plotly

我尝试使用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))

给出: enter image description here

然后,我尝试添加文本注释。

首先,我要创建注释数据:

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"))))

添加了文字但未加颜色编码: enter image description here

知道如何根据df$y使用c("blue","red")渐变来使文字变为彩色吗?

1 个答案:

答案 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"))

enter image description here