使情节水平的 yaxis 标题

use*_*545 1 r title subplot plotly

我正在尝试组合一系列R plotly绘图 - 垂直,但由于每个单独绘图的 y 轴标题是水平的,因此组合绘图变得混乱。

这是我的例子:

数据:

set.seed(1)
df <- data.frame(cluster=unlist(lapply(letters[1:10],function(i) rep(paste0("cluster:",i),200))),
                 group=rep(c(rep("A",100),rep("B",100)),10),val=rnorm(2000))
df$group <- factor(df$group,levels=c("A","B"))
Run Code Online (Sandbox Code Playgroud)

绘制一个图列表density,每个df$cluster

library(plotly)

plot.list <- lapply(unique(df$cluster),function(i){
  density.df <- do.call(rbind,lapply(c("A","B"),function(b){
    dens <- density(dplyr::filter(df,cluster == i,group == b)$val,adjust=1)
    return(data.frame(x=dens$x,y=dens$y,group=b,stringsAsFactors=F))
  }))
  density.df$group <- factor(density.df$group,levels=c("A","B"))
  
  if(i == unique(df$cluster)[1]){
    cluster.plot <- plot_ly(x=~density.df$x,y=~density.df$y,type='scatter',mode='lines',color=~density.df$group,line=list(width=3),showlegend=T) %>%
      layout(xaxis=list(title="Val",zeroline=F),yaxis=list(title=i,zeroline=F,showticklabels=F),legend=list(orientation="h",xanchor="center",x=0,y=1))
  } else{
    cluster.plot <- plot_ly(x=~density.df$x,y=~density.df$y,type='scatter',mode='lines',color=~density.df$group,line=list(width=3),showlegend=F) %>%
      layout(xaxis=list(title="Val",zeroline=F),yaxis=list(title=i,zeroline=F,showticklabels=F))
  }
  return(cluster.plot)
})
Run Code Online (Sandbox Code Playgroud)

然后,使用以下方法组合它们:

subplot(plot.list,nrows=length(plot.list),shareX=T,shareY=T,titleX=T,titleY=T)
Run Code Online (Sandbox Code Playgroud)

给出: 在此处输入图片说明

如何将每个图的 y 轴标题旋转plot.list为水平而不是垂直?

Ame*_*eya 5

如果我理解正确的话,在本机是无法实现的。

但是,正如链接所暗示的那样,请尝试使用注释。

以下是人们可能会如何去做——

set.seed(1)
df <- data.frame(cluster=unlist(lapply(letters[1:10],function(i) rep(paste0("cluster:",i),200))),
                 group=rep(c(rep("A",100),rep("B",100)),10),val=rnorm(2000))
df$group <- factor(df$group,levels=c("A","B"))
library(plotly)

plot.list <- lapply(unique(df$cluster),function(i){
  density.df <- do.call(rbind,lapply(c("A","B"),function(b){
    dens <- density(dplyr::filter(df,cluster == i,group == b)$val,adjust=1)
    return(data.frame(x=dens$x,y=dens$y,group=b,stringsAsFactors=F))
  }))
  density.df$group <- factor(density.df$group,levels=c("A","B"))

  if(i == unique(df$cluster)[1]){
    cluster.plot <- plot_ly(x=~density.df$x,y=~density.df$y,type='scatter',mode='lines',color=~density.df$group,line=list(width=3),showlegend=T) %>%
      layout(xaxis=list(title="Val",zeroline=F),yaxis=list(title = '', zeroline=F,showticklabels=F),legend=list(orientation="h",xanchor="center",x=0,y=1)) %>% 
      add_annotations(text = i, x = -0.1, xref = 'paper', y = 0.5, yref = 'paper', showarrow = FALSE)
  } else {
    cluster.plot <- plot_ly(x=~density.df$x,y=~density.df$y,type='scatter',mode='lines',color=~density.df$group,line=list(width=3),showlegend=F) %>%
      layout(xaxis=list(title="Val",zeroline=F),yaxis=list(title = '', zeroline=F,showticklabels=F)) %>%
      add_annotations(text = i, x = -0.1, xref = 'paper', y = 0.5, yref = 'paper', showarrow = FALSE)
  }
  return(cluster.plot)
})
subplot(plot.list,nrows=length(plot.list),shareX=T,shareY=T,titleX=T,titleY=T)
Run Code Online (Sandbox Code Playgroud)

这导致 - 在此处输入图片说明