消除情节之间的酒吧之间的差距 [英] Remove Gaps Between Bars in Plotly

查看:37
本文介绍了消除情节之间的酒吧之间的差距的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用Plotly在R中创建Marimekko图表.本质上,这只是一张堆叠的,宽度可变的条形图,两条条形图彼此直接相邻.目前,我的尝试如下:

I am trying to create a Marimekko chart in R using Plotly. Essentially, this is just a stacked, variable-width bar chart with both bars directly adjacent to one another. Currently, my attempt looks like this:

创建它的代码在这里:

bar.test <- plot_ly(type = "bar") %>% 
  layout(title = paste0("Newark Charter vs District BTO Makeup"),
         xaxis = list(title = ""),
         yaxis = list(title = "Percent BTO", tickformat = "%")) %>% 
  add_trace(x = ~test1$sch.type, y = ~test1$y, width = ~test1$width, 
            marker = list(color = c(blue.dark.opq, red.opq.2, blue.dark.opq, red.opq.2) ,
                            line = list(color = 'rgba(0,0,0,1)' , width = 2))) %>% 
  add_annotations(x = ~test1$sch.type, y = ~test1$annotation.y,
                  text = paste0("<b>", 100*round(test1$y, 3), "%"),
                  showarrow = F,
                  font = list(size = 14, color = 'rgba(0,0,0,1)')) %>% 
  add_annotations(x = ~test1$sch.type, y = ~test1$all.y,
                  text = paste0(test1$all.count), showarrow = F,
                  font = list(size = 14, color = 'rgba(0,0,0,1)')) %>% 
  hide_legend()

数据如下:

我的目标仅仅是在条之间没有缝隙.我尝试使用 bargap 参数执行此操作,但已阅读到分配条带宽度会使Plotly忽略 bargap 参数.我还阅读了一个潜在的解决方法,即手动更改条形的 offset 参数.但是,我有很多这样的数字,它们的宽度和百分比都不同,所以任何解决方案都不能手动完成.

My goal is simply to have there be no gap between the bars. I have tried to do this with the bargap argument but have read that assigning the bars a width makes Plotly ignore the bargap argument. I've also read a potential workaround is to manually change the bars' offset argument. However, I have many of these figures with varying widths and percents so any solution can't be manual.

推荐答案

您可以通过以下方法来实现:自定义 x 并在布局中使用 bargap = 0

You can do it by having custom x and using bargap = 0 in layout

library(plotly)
#> Loading required package: ggplot2
#> 
#> Attaching package: 'plotly'
#> The following object is masked from 'package:ggplot2':
#> 
#>     last_plot
#> The following object is masked from 'package:stats':
#> 
#>     filter
#> The following object is masked from 'package:graphics':
#> 
#>     layout

test1 <- data.frame(
    city.state = "Newark",
    sch.type = c("Charter", "Charter", "District", "District"),
    bto.stat = c(0,1,0,1),
    y = c(.7, .3, .1, .9),
    width = c(.3, .3, .7, .7),
    x = c(.15, .15, .65, .65),
    annotation.y = c(.3, .8, .05, .55),
    all.count = c(46000, 46000, 99000, 99000),
    all.y = c(1,1,1,1)
    )

bar.test <- plot_ly(type = "bar") %>%
    add_trace(x = test1$x,
              y = test1$y,
              width = test1$width,
              marker = list(
                color = c("blue", "red", "blue", "red") ,
                line = list(color = 'rgba(0,0,0,1)' , width = 2)
                )
              ) %>%
    layout(bargap = 0)

bar.test

reprex软件包(v0.3.0)于2019-11-19创建sup>

Created on 2019-11-19 by the reprex package (v0.3.0)

这篇关于消除情节之间的酒吧之间的差距的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆