【问题标题】:ggplotly distorts marker sizes and line thickness, ignores hjust/vjustggplotly 扭曲标记大小和线条粗细,忽略 hjust/vjust
【发布时间】:2021-02-17 15:15:43
【问题描述】:

当通过ggplot2 vs plotly 渲染相同的情节时,我注意到许多不同之处。它包括标记大小、线条粗细和文本标签调整等基本内容。

require(ggplot2)
require(plotly)
data(iris)

p1 <-
ggplot(data = iris, aes(x=Sepal.Length, y=Sepal.Width, shape=Species, color=Species)) + 
  geom_point(size=3) +
  geom_text(x=5.5, y=2, label='\u25BA',color='red',hjust='left',vjust='bottom')+
  coord_cartesian(xlim = c(5,6), ylim = c(2,3))+
  geom_abline(slope = 1, intercept = -3)+
  scale_shape_manual(values=c(21,22,23))

p1
ggplotly(p1)

您可以在此示例中看到,所有标记都大了大约 1/3,线条粗了 3 倍,文本标签(此处为红色三角形)的 hjustvjust 被忽略。除了手动调整每一层的所有参数之外,还有什么办法可以解决这个问题?

【问题讨论】:

    标签: r plotly r-plotly ggplotly


    【解决方案1】:

    请注意,使用 ggplotly 转换 ggplot 对象并不总是会产生与直接使用 plotly 获得的完全相同的输出。但是,您可以根据您对 ggplotly 的期望来调整点的大小和线宽。此外,将 hjust 和 vjust 设置为 0 或 1,查看 geom_text 的文本显示位置。当您将鼠标悬停在红色三角形上时,使用 annotate 而不是 geom_text 会显示如下所示的 x 和 y 值。

    试试这个

    mycolor <- c("green","blue","red")
    myshape <- c(21, 22, 23)
    
    p1 <-
      ggplot(data = iris, aes(x=Sepal.Length, y=Sepal.Width, shape=Species, color=Species)) + 
      geom_point(size=2) +
      # geom_text(x=5.5, y=2, label='abc',color='red',hjust=1,vjust=0)+ ## '\u25BA'
      annotate(geom="text", x=5.5, y=2, label='\u25BA',color='red') +
      coord_cartesian(xlim = c(4,7), ylim = c(2,5))+
      scale_color_manual(values=mycolor) +
      scale_shape_manual(values=myshape) +
      geom_abline(slope = 1, intercept = -3, lwd=0.5)+
      guides(shape = guide_legend(override.aes=list(color=myshape) ),    
             color= 'none')   ## do not display color legend
             
    p1
    ggplotly(p1)
    

    【讨论】:

    • 感谢您的意见。不幸的是,hjust/vjust 作为 0-1 也不起作用,在我的真实图中,xy 的所有标记都来自数据集(通过 aes()),所以我无法设置他们明确地玩耍。现在我使用一种解决方法,将一些数字添加到x 坐标,但这确实不是一个好的解决方案,当绘图被调整大小/重新缩放时它不起作用。
    • 同样,调整标记的大小和线宽是我目前所做的,也是我想避免的:那样我必须为每个图制作两个版本(一个用于ggplot,一个用于plotly) - 有许多不同的地块,每个地块有 10-15 层,它变得一团糟......
    • 我也有同样的问题。此外,ggplot 中的标题(脚注)很好;将 ggplot 对象转换为 ggplotly 时,标题与底部图例重叠。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 2012-11-25
    • 2019-02-04
    • 1970-01-01
    • 2014-03-26
    相关资源
    最近更新 更多