如何将matplotlib中坐标轴背景颜色改为透明

0 投票
1 回答
29 浏览
提问于 2025-04-14 16:41
import matplotlib
import pandas as pd
df = pd.DataFrame({
    'name': list('AABB'),
    'open' :[51.40,40.15,757.00,27.55],
    'high' :[54.70,40.65,771.00,27.65],
    'low'  :[51.00,40.05,754.00,27.30],
    'close':[53.30,40.30,770.00,27.50]
})

fig, ax = plt.subplots(df.shape[0]+1,1)
plt.gcf().set_size_inches(0.5,(df.shape[0]+1))
i=1
ax[0].axis('off')
for index, row in df.iterrows():
    if row['close'] > row['open']:
            color = 'crimson' 
    elif row['close'] < row['open']:
        color = 'green'
    else:
        color = 'gray'
    ax[i].bar(row['name'], abs(row['close'] - row['open']), bottom=min(row['open'], row['close']), color=color)
    ax[i].vlines(row['name'], row['low'], row['high'], color=color)
    ax[i].axis('off')
    i +=1

plt.savefig('test2.jpg',transparent=True,bbox_inches='tight')
plt.close()

我用它来创建一个蜡烛图。

![空的,蜡烛图,蜡烛图,蜡烛图,蜡烛图]

在这里输入图片描述

但是,背景颜色不是透明的。

我尝试添加 transparent=True,但是没有效果。

plt.savefig('test2.jpg',transparent=True,bbox_inches='tight')

我该如何把所有白色背景变成透明的呢?

1 个回答

1

你的代码运行得很好,但JPG格式不支持透明背景。

你需要导出为其他格式,比如PNG:

plt.savefig('test2.png', transparent=True, bbox_inches='tight')

输出结果:

matplotlib transparent export

有趣的是,imgur把上面的输出转换成了JPG格式,因此失去了透明效果。

撰写回答