cod*_*ler 2 python widget matplotlib qt-designer
我正在使用QtDesigner创建的应用程序中绘制图形,问题是,当显示grapth时,图形空间和mplwidget空间之间会出现一个大的"灰色边缘".这使得情节更小,所以我怎么能删除当我在主窗口中显示我的图形时出现的这个大的"灰色边框"?
我希望我的图表填充小部件的所有可用空间.
简短的回答是:"使用" fig.tight_layout()
.
但是,让我对发生了什么进行更多解释.
您将看到图形与轴之间的相互作用.
A Figure
包含一个或多个Axes
(图/子图/等).所有东西都绘制在图形上Canvas
(基本上是后端特定的像素缓冲区或矢量页面).
制作轴时,它不会填满所有数字.
单轴的默认值是轴的左下角为图的宽度的12.5%和高度的10%,并且轴占据图的宽度和高度的90%.(不对称是为左侧的刻度标签留出空间.)
您设置的位置是下图中白框的范围.它不包括刻度标签,标题,轴标签等(这就是轴不填满整个图形的原因).
默认值如下所示:
附注:为了保持代码的短,我要使用pyplot
的界面自动生成Figure
,Axes
和Canvas
,而你可能显式地创建每一个与你的GUI框架工作.但结果是一样的.
每个轴实例占用的数字的百分比在创建时设置.您可以明确指定它:
fig = plt.figure()
ax = fig.add_axes([left, bottom, width, height])
Run Code Online (Sandbox Code Playgroud)
或者使用子图的网格,通过以下方式可以更容易地进行调整fig.subplots_adjust
:
fig, axes = plt.subplots(nrows=2, ncols=2)
# Expand the grid of subplots out (Notice that
fig.subplots_adjust(left=0.05, bottom=0.05, right=0.98, top=0.98)
Run Code Online (Sandbox Code Playgroud)
什么tight_layout
是计算刻度标签,标题,轴标签等的范围,并确定参数,fig.subplots_adjust
使一切都只是在图中.(请记住,subplots_adjust
轴位置指定控制"白盒子"的范围 - 实际轴本身 - 并且不包括刻度标签等)
所以,如果我们做的就是我们之前做过的事情:
fig, ax = plt.subplots()
Run Code Online (Sandbox Code Playgroud)
然后打电话:
fig.tight_layout()
Run Code Online (Sandbox Code Playgroud)
我们会得到一些没有"边界"的东西,因为轴将占据这个数字的更大百分比:
如果要控制"边框"的颜色使用fig.set_facecolor(color)
(或fig.patch.set_facecolor
).
归档时间: |
|
查看次数: |
5813 次 |
最近记录: |