如何在pyqtgraph的一个轴上绘制两个barh?

how to plot two barh in one axis in pyqtgraph?

我需要这样的东西: 演示数据:

bottom10
Out[12]: 
0   -9.823127e+08
1   -8.069270e+08
2   -6.030317e+08
3   -5.709379e+08
4   -5.224355e+08
5   -4.755464e+08
6   -4.095561e+08
7   -3.989287e+08
8   -3.885740e+08
9   -3.691114e+08
Name: amount, dtype: float64

top10
Out[13]: 
0    9.360520e+08
1    9.078776e+08
2    6.603838e+08
3    4.967611e+08
4    4.409362e+08
5    3.914972e+08
6    3.547471e+08
7    3.538894e+08
8    3.368558e+08
9    3.189895e+08
Name: amount, dtype: float64

同样的matplotlib问题在这里: 但是pyqtgraph中没有任何ax.twiny()。还有其他方法吗?

我发现了一个Widgets“BarGraphItem”,它没有写在官方文档中(PyQtGraph’s Widgets List)。它可以“rotate()”使 barh 像 matplotlib 一样。它并不完美,但有效!

import pyqtgraph as pg
import pandas as pd
import numpy as np

bottom10 = pd.DataFrame({'amount':-np.sort(np.random.rand(10))})
top10 = pd.DataFrame({'amount':np.sort(np.random.rand(10))[::-1]})
maxtick=max(top10.amount.max(),-bottom10.amount.min())*1.3

win1 = pg.plot()  
axtop=pg.BarGraphItem(x=range(len(top10)),height=top10.amount,width=0.6,brush='r')
axtop.rotate(-90)
win1.addItem(axtop)
axbt=pg.BarGraphItem(x=range(len(top10)),height=-bottom10.amount,y0=maxtick+bottom10.amount,width=0.6,brush='g')
axbt.rotate(-90)
win1.addItem(axbt)