我需要在另一個帶有網格的影像上放置一個透明的箱線圖。我根據我傳遞的資料創建了一個大小的影像。繪制箱線圖后,影像的初始大小已更改。這是我的代碼部分,進一步說明:
png_width = 280
png_height = 120
px = 1 / plt.rcParams['figure.dpi'] # pixel in inches
fig_width = math.ceil((png_width / 60) * (max(data) - min(data)))
fig_cnt = 1
fig = plt.figure(fig_cnt, figsize=(fig_width * px, png_height * px), frameon=False, clear=True)
ax = fig.add_subplot(111)
bp = ax.boxplot(data, vert=False, widths=0.2, whis=[0, 100], )
for median in bp['medians']:
median.set(color='#000000')
plt.axis('off')
plt.savefig(filepath, bbox_inches='tight', pad_inches=0, transparent=True)
plt.close()
對于給定的一組資料,我有 min=3 和 max=60。fig_width=266px 這是正確的。現在我想繪制一個箱線圖,其中從第一個胡須到第二個胡須的距離也是 266px。在我的示例中,保存的影像只有 206 像素。我不需要箱線圖上的任何軸,只需要箱線圖本身。為什么不保持初始影像大小?
uj5u.com熱心網友回復:
子圖周圍有一個默認邊距,因此將axes整個fig區域設定為
fig.subplots_adjust(0, 0, 1, 1)
并且您保存的影像寬度正好為 266 像素。
由于自動縮放,胡須末端之間的距離將更小。如果您希望胡須用完整個 x 軸,您可以相應地設定 x 限制:
ax.set_xlim(bp['whiskers'][0].get_xdata()[1], bp['whiskers'][1].get_xdata()[1])
(您可能希望稍微增加限制以查看大寫的完整線寬)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/362624.html
標籤:Python matplotlib
