名称参数图 Barplot

Names Argument Plotly Barplot

所以我在 Shiny 中使用 Plotly 来创建条形图。但是 x 标签不是唯一的,例如(狗两次):

设 df 为:

x     y
1     Dog
2     Cat
3     Dog
3     Ant
4     Bee

我想绘制所有行,但这行不通,因为 x 列中的重复变量 Dog:

p = plot_ly(df, x = df[,2],  y = df[,1], type = "bar", marker = list(color = toRGB("blue")))
p

所以我正在考虑通过以下方式解决这个问题: 我可以通过删除 x 参数来绘制所有 5 行。然后我希望能够分别修改这些名称来填充x列变量。

p = plot_ly(df,  y = x, type = "bar", marker = list(color = toRGB("blue")))
p

如何手动更改 plotly barplot 中的 x 标签?

谢谢

直接的官方方法:

xaxis 使用 tickmodetickvalsticktext 参数 layout

library(plotly)
plot_ly(df, y = x, type = "bar", 
        marker = list(color = toRGB("blue"))) %>% 
         layout(xaxis = list(tickmode = "array",
                             tickvals = 0:4,
                             ticktext = c("Dog", "Cat", "Dog", "Ant", "Bee")))

我不确定上述命令中的 y = x 在其他类型的绘图中的推广效果如何。因此,我推荐这种方法:

# change the y labels (I assigned "a", "b" etc.) 
df$y <- letters[1:nrow(df)]


df %>% plot_ly(x = y,  y = x, type = "bar", 
               marker = list(color = toRGB("blue"))) %>% 
               layout(xaxis = list(tickmode = "array",
                                   tickvals = c("a", "b", "c", "d", "e"),
                                   ticktext = c("Dog", "Cat", "Dog", "Ant", "Bee")))

简短技巧:

只需在第二次出现 dog 的末尾添加一个空格:

df$y <- as.character(df$y)
df[3,2] <- "Dog "

然后您可以使用您的第一个绘图命令:

plot_ly(df, x = df[,2],  y = df[,1], type = "bar", marker = list(color = toRGB("blue")))

我检查了这两种方法的图,它们看起来一样。 显然,您的实际应用程序可能不会这么简单,并且破解可能不可行。

此外,您始终可以使用 ggplot2,然后让您的绘图与 plotly::ggplotly

交互