在使用 Plotly 制作的条形图中填充条形之间的 space

Filling the space between bars in a bar graph made with Plotly

我有一个条形图。图中所示的测量值并不直接相邻;他们之间有space。我想填充测量之间的 space,使它们与之前的测量值相同。 plotly 这可能吗?

编辑澄清:假设我有这些测量值:[ 20=3, 25=3, 27=3, 30=10, 31=10, 50=2, 56=2] -- 我会希望数据点 20、25 和 27 在条形图上显示为一个大条(填充 x 轴上 20 和 27 之间的 space),30 和 31 是同一个条,50和56一样吧。我想要这个的原因是我在图表中有数百万个空点,如果我手动填充它们,图表会使浏览器停止运行。

一种可能性是为您的测量创建一个散点图并将条形添加为 shapes。使用 connectgaps: Falsefill: tozeroy 的更简单的解决方案在这里不起作用。

import plotly
plotly.offline.init_notebook_mode()
import plotly.graph_objs as go

meas_x = [20, 25, 27, 30, 31, 50, 56]
meas_y = [3, 3, 3, 10, 10, 2, 2]
meas_y.append('None')
meas_x.append('None')

trace1 = go.Scatter(
    x=meas_x,
    y=meas_y,
    mode='markers'
)

shapes = list()    
y = meas_y[0]
x = meas_x[0]
for i, m_y in enumerate(meas_y[1:]):
    if y != m_y:
        shapes.append({
            'type': 'rect',
            'x0': x,
            'y0': 0,
            'x1': meas_x[i],
            'y1': meas_y[i - 1],
            'fillcolor': '#d3d3d3',
        })
        y = m_y
        x = meas_x[i + 1]

fig = {
    'data': [trace1],
    'layout': go.Layout(shapes=shapes)
}
plotly.offline.iplot(fig)