所以我在Shiny中使用Plotly来创建一个条形图。但是,x标签不是唯一的(例如,Dog两次):
让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
如何手动更改绘图条形图中的x标签?
谢谢
答案 0 :(得分:2)
直截了当的官方方法:
使用tickmode
中的tickvals
,ticktext
和layout
个参数xaxis
:
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