R在标签区域中绘图

R在标签区域中绘图,r,shiny,plotly,R,Shiny,Plotly,是否可以在x-“标签轴”下方绘制形状。例如: h <- mtcars %>% group_by(gear) %>% summarise(mpg = mean(mpg)) plot_ly( h, name = "20", type = "waterfall", x = ~gear, textposition = "outside", text = c("Gear 3", "

是否可以在x-“标签轴”下方绘制形状。例如:

h <- mtcars %>% group_by(gear) %>% summarise(mpg = mean(mpg))
plot_ly(
  h, name = "20", type = "waterfall", 
  x = ~gear,
  textposition = "outside", 
  text = c("Gear 3", "Gear 4", "Gear 5"),
  y= ~mpg)
h%分组依据(档位)%>%汇总(mpg=平均值(mpg))
阴谋(
h、 name=“20”,type=“瀑布”,
x=~齿轮,
textposition=“外部”,
text=c(“3档”、“4档”、“5档”),
y=~mpg)
有下面这样的红色盒子。理想情况下,我希望这些盒子彼此对齐,并且与上面的盒子对齐,但我的绘画技能是不存在的


谢谢。

您可以使用
添加注释
将框放置在绘图区域之外。经过反复试验后:

  • 设置
    yref=“纸张”

  • 设置
    y=0
    。(将框与x轴对齐)

  • 使用
    yshift=-xxxx
    移动方框。(将箱子移到外面)

  • 使用
    布局增加底部边距(边距=列表(b=xxxx))
    (为方框留出空间)

  • 试试这个:

    library(plotly)
    
    h <- mtcars %>% group_by(gear) %>% summarise(mpg = mean(mpg))
    plot_ly(
      h, name = "20", type = "waterfall", 
      x = ~gear,
      textposition = "outside", 
      text = c("Gear 3", "Gear 4", "Gear 5"),
      y= ~mpg) %>% 
      add_annotations(
        x = ~gear,
        y = 0,
        yshift = -100,
        bgcolor = I("red"),
        bordercolor = I("black"),
        width = 200,
        height = 20,
        yref = "paper",
        text = c("Gear 3", "Gear 4", "Gear 5"),
        showarrow = FALSE
      ) %>% 
      layout(margin = list(b = 100))
    
    library(plotly)
    h%分组单位(齿轮)%>%汇总(mpg=平均值(mpg))
    阴谋(
    h、 name=“20”,type=“瀑布”,
    x=~齿轮,
    textposition=“外部”,
    text=c(“3档”、“4档”、“5档”),
    y=~mpg)%>%
    添加注释(
    x=~齿轮,
    y=0,
    yshift=-100,
    bgcolor=I(“红色”),
    bordercolor=I(“黑色”),
    宽度=200,
    高度=20,
    yref=“纸张”,
    text=c(“3档”、“4档”、“5档”),
    showarrow=FALSE
    ) %>% 
    布局(边距=列表(b=100))
    

    太棒了!非常感谢。如果x是离散的,然后对一些x变量进行可能的分组,是否可以做类似的事情。如果我显示所有三个绿色框,但它们的x值分别为“Gear3”、“Gear4”和“Gear5”。然而,除此之外,只有两个红色框。一个框用于齿轮3和齿轮4(跨越其整个宽度),另一个框用于齿轮5?Hi@mfindinge。这两件事都是可能的。试试看。(;我刚刚勾选了。1.离散x轴没有问题。2.如果您只需要两个类别的框,只需说x=c(1,3),然后调整宽度,并使用xhift,例如xhift=c(50,-50)将一个框向右移动,另一个向左移动。我可以使用索引顺序作为x值。但是,我希望框为:1)根据每组离散x值动态调整宽度。2) 动态调整每个文本的高度(可能具有一些最小/最大大小)。1号在窗口/应用程序调整大小时调整大小,这也将影响2号。有没有办法将宽度和高度链接到数据库大小?编辑:没有看到您的评论,将首先阅读。(:尝试一下。以前没有这样做过。不确定动态高度和宽度可以做多少。但是您可以将高度链接到数据库的大小,例如高度=~2*mpgI会处理它!可能会为宽度创建一个函数。非常感谢!