【问题标题】:Filling the space between bars in a bar graph made with Plotly填充使用 Plotly 制作的条形图中条形之间的空间
【发布时间】:2017-02-18 01:12:26
【问题描述】:

我有一个绘图条形图。图表所示的测量值不是直接相邻的;它们之间有空间。我想填充测量之间的空间,使它们与之前的测量值相同。这可以用 plotly 实现吗?

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

【问题讨论】:

  • 我猜答案是是的。也许使用width=...?!
  • @jojo - 我很欣赏你的简单假设并尝试提供帮助。我在上面进行了编辑以更好地说明我的问题。

标签: python plotly


【解决方案1】:

其中一种可能性是为您的测量创建散点图并将条形添加为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)

【讨论】:

  • 我复制了您的示例,但没有显示黑线(形状)。只有蓝色标记。为什么会这样?
  • @horse hair:让我检查一下,可能是复制粘贴错误
  • 刚刚又试了一次,将整个代码复制到一个新的 Jupyter 笔记本上,它就可以工作了。你用的是什么环境?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-06
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 2020-11-14
  • 2022-08-18
相关资源
最近更新 更多