如何使用 R、ggplot 和 plotly 在堆叠条形图的线性和对数刻度之间切换?
How to toggle between linear and logrithmic scale for a stacked bar chart using R, ggplot and 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 轴从线性刻度变为对数刻度(基于下拉列表 selection)。
我发现以下 link 关于如何在折线图的对数和线性比例之间切换的内容,我尝试使用它,但无法获得我想要的结果:
我附上了 select 不同下拉列表时得到的结果图片:
When i select "Linear" scale:
When i select "log" scale:
如果有人能指导我正确的方向,我将不胜感激。谢谢。
尝试将 visible = c(T,F) 和 visible = c(F,T) 都更改为 visible = c(T,T) 看看是否有帮助!
我想为用户提供在堆叠条形图的线性和对数刻度之间切换的选项。我找到了折线图的示例,我试图重新调整它的用途,但无法更改它以满足我对堆叠条形图的要求。
示例数据如下:
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 轴从线性刻度变为对数刻度(基于下拉列表 selection)。 我发现以下 link 关于如何在折线图的对数和线性比例之间切换的内容,我尝试使用它,但无法获得我想要的结果:
我附上了 select 不同下拉列表时得到的结果图片:
When i select "Linear" scale:
When i select "log" scale:
如果有人能指导我正确的方向,我将不胜感激。谢谢。
尝试将 visible = c(T,F) 和 visible = c(F,T) 都更改为 visible = c(T,T) 看看是否有帮助!