我正在使用matplotlib和pandas DataFrame绘制如下的barplot:
pdata = pd.DataFrame([[11.14285714, 6.33333333, 2.52380952],
[10.47619048, 6.61904762, 2.9047619 ],
[10.80952381, 6.19047619, 3. ],
[11.0952381 , 6.66666667, 2.23809524],
[10.14285714, 4.9047619 , 4.95238095],
[ 9.61904762, 5.71428571, 4.66666667],
[10.0952381 , 5.14285714, 4.76190476],
[ 9.47619048, 5.14285714, 5.38095238],
[10.66666667, 4.38095238, 4.95238095],
[ 9.66666667, 5.04761905, 5.28571429],
[10.33333333, 4.95238095, 4.71428571],
[10.85714286, 4.9047619 , 4.23809524],
[ 9.71428571, 4.9047619 , 5.38095238],
[10.71428571, 4.52380952, 4.76190476],
[ 9.57142857, 3.71428571, 6.71428571],
[11.61904762, 5.47619048, 2.9047619 ],
[12.23809524, 5.23809524, 2.52380952],
[11.28571429, 7.28571429, 1.42857143],
[10.52380952, 6.52380952, 2.95238095],
[10.80952381, 6.38095238, 2.80952381],
[10.95238095, 7.71428571, 1.33333333],
[11.0952381 , 7.42857143, 1.47619048],
[10.0952381 , 8.71428571, 1.19047619],
[10.42857143, 8.42857143, 1.14285714],
[10.57142857, 7.95238095, 1.47619048],
[10.14285714, 8.66666667, 1.19047619],
[ 9.38095238, 9.38095238, 1.23809524],
[ 8.9047619 , 9.80952381, 1.28571429],
[10.66666667, 8.04761905, 1.28571429],
[ 9.19047619, 9.19047619, 1.61904762]])
pdata.index = np.arange(30)+1
fig,axes = plt.subplots(1,2,figsize=(6,3),sharey=True)
ax = axes[0]
pdata[pdata.index<=15].plot(
ax=ax,kind='bar',stacked=True,width=.95, color=colors,alpha=.7, rot=0)
ax = axes[1]
pdata[pdata.index>15].plot(
ax=ax,kind='bar',stacked=True, color=colors,width=.95,alpha=.7, rot=0)
ax.get_legend().remove()
ax.set_ylim([0,20])
fig.tight_layout()
但是,生成的图形如下所示,条之间的间距不同:
有没有办法校正间距?另外,是否可以进一步缩小两幅图之间的距离?
答案 0 :(得分:1)
您看到的是两种效果的组合,@override
Widget build(BuildContext context) {
return DefaultTabController(
length: dateList.length,
child: Scaffold(
appBar: AppBar(
bottom: const PreferredSize(
preferredSize: Size.zero,
child: TabBar(
tabs: <Widget>[
_buildTabs(),
],
isScrollable: true,
),
),
),
body: TabBarView(
children: <Widget>[
_buildSchedule()
],
),
),
);
}
@override
Widget _buildSchedule() {
return Container(
child: Center(
child: StreamBuilder<QuerySnapshot>(
stream: Firestore.instance
.collection('schedule')
.where('time', isEqualTo: _stateDate)
.orderBy('date')
.snapshots(),
builder:
(BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (!snapshot.hasData) {
return const Text('Loading...');
}
return ListView.builder(
itemCount: snapshot.data.documents.length,
itemBuilder: (BuildContext context, int index) =>
_buildScheduleItem(context, snapshot.data.documents[index]),
);
}),
),
);
}
属性设置为width
,而0.95
太低而无法解析每空白在酒吧之间。如果您需要一些空格,但是在每个小节之间,则可以按照注释的建议和this answer中的
dpi
dpi
会将图形的fig,axes = plt.subplots(1,2,figsize=(6,3),sharey=True, dpi=300)
设置为dpi
并产生类似
由300
创建小节间空格的地方,如果您根本不想在小节之间有空格,只需设置width=0.95
即可产生
请注意,在两种情况下,我都使用width=1.0
而不是plt.subplots_adjust(wspace=0.05)
,但这是优先考虑的问题。此外,请注意,如果您使用fig.tight_layout()
,则无需调整width=1.0
属性,因为显示正确:
dpi