我正在尝试避免通过袖扣[plotly]生成的堆积条形图中的y轴死角
数据如下:
delay_percentage
crane_delay_type_gkey 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 ... 18.0 19.0 20.0 21.0 22.0 23.0 24.0 25.0 26.0 27.0
crane_gkey
288 76.425626 1.846134 0.000000 0.701747 0.000000 0.000000 4.933820 0.939261 0.000000 0.000000 ... 1.338717 0.291495 0.421048 0.269903 0.151145 0.636970 6.395612 1.589187 0.000000 0.172738
333 46.153846 0.000000 0.000000 0.000000 0.000000 0.000000 7.692308 0.000000 0.000000 0.000000 ... 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
338 81.818182 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ... 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
345 75.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 12.500000 0.000000 0.000000 ... 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
我用于袖扣的代码:
df.iplot(kind ='barh', barmode = 'stack')
情节看起来像这样:
如何删除条形之间的空格?尤其是y轴值288和333之间的差距很大。
我尝试将Crane_gkey值[y轴值]制成字符串,但没有执行任何操作。 另外,我如何增加袖扣条形图中的条形厚度。
答案 0 :(得分:1)
为什么不只在源处截断空值。我的意思是使用pandas
本身。
这是我的解决方法。
我们有一个示例数据框。
df = pd.DataFrame({"A": ["foo", "foo", "foo", "foo", "foo",
"bar", "bar", "bar", "bar"],
"B": ["one", "one", "one", "two", "two",
"one", "one", "two", "two"],
"C": ["small", "large", "large", "small",
"small", "large", "small", "small",
"large"],
"D": [1, 2, 2, 0, 0, 4, 5, 6, 7]})
哪些是枢轴给我的?
table = pd.pivot_table(df, values='D', index=['A', 'B'],
columns=['C'], aggfunc=np.sum)
参考:here
输出:
C large small
A B
bar one 4.0 5.0
two 7.0 6.0
foo one 4.0 1.0
two NaN 0.0
因此,如果我们删除foo and two
,我们可以获得正确的图。我使用
table = table.fillna(0) # replace all NaN values to zero
table = table[(table.T != 0).any()] # remove all the rows which are having sum as zero.
输出:
C large small
A B
bar one 4.0 5.0
two 7.0 6.0
foo one 4.0 1.0
最后我们可以使用袖扣绘制
plot = table.iplot(kind ='barh', barmode = 'stack', asFigure=True)
py_offline.iplot(plot)
请尝试此解决方案,让我知道是否可以解决您的问题!