R语言 如何在ggplotly中设置字体大小?

ddarikpa  于 2023-06-27  发布在  其他
关注(0)|答案(1)|浏览(165)

我做了一个ggplot

library(ggplot2)
library(ggplotly)

f1 <- diamonds |> group_by(cut,clarity,color) |>  count() |> 
  group_by(cut) |> mutate(N=sum(n)) |> 
      ggplot() +
      aes(
        x =  cut,
        y = n,
        fill = cut
      ) +
      geom_col() +
      theme(legend.position = "none")+
      coord_flip()+
  facet_wrap(vars(clarity))
f1

我想转换为ggplotly对象

ggplotly(f1)%>% 
        layout(legend=list(font = list(size = 8)), 
            xaxis = list(titlefont = list(size = 8), tickfont = list(size = 8)),
            yaxis = list(titlefont = list(size = 8), tickfont = list(size = 8)))

但是,文本的大小仅在第1个子图中更改。我想将大小应用于所有子图:

问题是我把它放在一个函数中,所以面的数量各不相同,所以这篇文章没有帮助:R ggplotly with facet_wrap : axis tick size not changing for all plots

oalqel3c

oalqel3c1#

正如在参考文章中的答案中已经指出的那样,你必须单独设置每个轴的样式,即与ggplot2相反,plotly中每个子图或小平面具有其自己的轴。因此,xaxisyaxis将仅对分面面板的第一行或第一列有影响。

library(ggplot2)
library(plotly, warn=FALSE)

axis <- list(tickfont = list(size = 8))

ggplotly(f1) %>%
  layout(
    xaxis = axis,
    xaxis2 = axis,
    xaxis3 = axis,
    yaxis = axis,
    yaxis2 = axis,
    yaxis3 = axis
  )

出于这个原因,恕我直言,更简单的方法是使用theme选项直接在ggplot2中设置轴的样式:

f2 <- f1 +
  theme(axis.text = element_text(size = 6))

ggplotly(f2)

相关问题