减少boxplot matplotlib内的空间

Abh*_*yal 1 python matplotlib boxplot

我想删除剧情边界内的额外空间

plt.boxplot(parkingData_agg['occupancy'], 0, 'rs', 0, 0.75)
plt.tight_layout() # This didn't work. Maybe it's not for the purpose I am thinking it is used for.
plt.yticks([0],['Average Occupancy per slot'])
fig = plt.figure(figsize=(5, 1), dpi=5) #Tried to change the figsize but it didn't work
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

所需的图如下图左图所示 在此输入图像描述

Imp*_*est 5

代码中的命令顺序有点混乱.

  • 您需要在绘图命令之前定义一个图形(否则生成第二个图形).
  • 您还需要tight_layout 设置ticklabel 调用,以便可以考虑长的ticklabel.
  • 要使位置0处的刻度线与箱线图的位置匹配,则需要将其设置为该位置(pos=[0])

这些变化将导致以下情节

import matplotlib.pyplot as plt
import numpy as np
data = np.random.rayleigh(scale=7, size=100)

fig = plt.figure(figsize=(5, 2), dpi=100)

plt.boxplot(data, False, sym='rs', vert=False, whis=0.75, positions=[0])

plt.yticks([0],['Average Occupancy per slot'])

plt.tight_layout() 
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

然后,您可以更改widths箱线图以匹配所需的结果,例如

plt.boxplot(..., widths=[0.75])
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

您当然可以将您的绘图放在子图中,而不是让轴填充图的整个空间,例如

import matplotlib.pyplot as plt
import numpy as np
data = np.random.rayleigh(scale=7, size=100)

fig = plt.figure(figsize=(5, 3), dpi=100)
ax = plt.subplot(3,1,2)

ax.boxplot(data, False, sym='rs', vert=False, whis=0.75, positions=[0], widths=[0.5])

plt.yticks([0],['Average Occupancy per slot'])

plt.tight_layout()
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述