如何使用R, ggplot和plotly在堆叠条形图的线性和对数尺度之间切换?



我想为堆叠条形图提供在线性和对数刻度之间切换的用户选项。我已经找到了一个折线图的例子,我试图重新利用它,但无法改变它以适应我的堆叠条形图的要求。

以下是示例数据:

Vcc_cost <-  c("Health", "risk", "herd")
Procurement_cost <- c(108898.3, 6847515.7, 171187893.0)
Delivery_cost <- c(27224.58, 1711878.93, 42796973.25)
sample_data <- data.frame(Vcc_cost, Procurement_cost , Delivery_cost)

下面是我试图绘制它的方法:

fig <- plot_ly(sample_data, type = 'bar') %>% 
add_trace(x=~Vcc_cost, y=~Procurement_cost,  name = "Procurement Cost") %>% 
add_trace(x=~Vcc_cost, y=~Delivery_cost, name="Delivery cost", visible = F)
fig <- fig %>%  layout(barmode = 'stack',
updatemenus = list(list(
active = 0,
buttons= list(
list(label = 'linear',
method = 'update',
args = list(list(visible = c(T,F)), list(yaxis = list(type ='linear')))),
list(label = 'log',
method = 'update', 
args = list(list(visible = c(F,T)), list(yaxis = list(type ='log'))))))))

然而线性下拉菜单显示的是"交货成本";日志下拉栏显示"采购成本"。但是,我想得到堆叠的酒吧,只有y轴变化从线性尺度到对数尺度(基于下拉选择)。我找到了以下关于如何在折线图的对数和线性比例尺之间切换的链接,我试图使用这个,但我无法得到我想要的结果:

使用R交互更改Plotly图像中的轴比例(线性/对数)

我附加的结果的图片,我得到当我选择不同的下拉菜单:

当我选择"Linear"规模:

当我选择"log"规模:

如果有人能指引我正确的方向,我将非常感激。谢谢你。

尝试将可见= c(T,F)和可见= c(F,T)更改为可见= c(T,T),看看是否有帮助!

最新更新