You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Altair调用save()保存图表时丢失边框配置参数的问题求助

Altair调用save()保存图表时丢失边框配置参数的问题求助

大家好,我在使用Altair绘制热力图时遇到了一个导出格式不一致的问题,想请教一下社区的各位大佬:

我当前的环境是Python 3.8 + Altair 5.3.0,在Jupyter Notebook里做了一个带宽单元格边框的热力图,Notebook内直接渲染的图表完全符合预期——单元格之间的白色边框宽度达到了我设置的5像素。但当我调用save()方法把图表导出为PNG、SVG或PDF格式时,边框出现了异常:要么完全消失,要么在PNG/SVG里只剩极细的线条,PDF格式里则完全看不到边框。

以下是我的完整代码(注:原代码里stroke='w'应该是笔误,我修正为stroke='white',否则颜色值无效):

import altair as alt
import pandas as pd

# 创建示例数据集
data_df = pd.DataFrame({
    'X': [1,2,3,4,5,6,7,8,9,10],
    'Y': [1,2,3,4,5,6,7,8,9,10],
    'Intensity': [0,0,0,0,0,1,1,1,1,1]
})

intensity_vars = [0,1]
range_colors = ['#208943', '#c0e6ba']

# 配置热力图
heatmap = alt.Chart(data_df).mark_rect(
    stroke='white',
    strokeWidth=5
).encode(
    x = alt.X('X:N'),
    y = alt.Y("Y:N"),
    color = alt.Color("Intensity:N", 
                     scale = alt.Scale(domain=intensity_vars, range = range_colors))
)

# 保存为不同格式文件
heatmap.save("test.png")
heatmap.save("test.svg")
heatmap.save("test.pdf")

# 在Notebook中渲染图表
heatmap

效果差异:

  • Notebook内渲染的图表:边框清晰可见,宽度与设置的strokeWidth=5完全匹配
  • 保存后的PNG/SVG/PDF图表:边框几乎完全消失(SVG和PDF的显示效果与PNG一致)

请问有没有办法可以让save()导出的图表和Notebook中显示的效果完全一致呢?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 08:04:33