如何将Seaborn热力图作为子图嵌入Plots.plot组合图?
解决Seaborn与Plots图组合布局的问题
错误原因
Seaborn是基于Python Matplotlib的绘图库(Julia中通过PyCall调用),其heatmap返回的是Matplotlib的Axes对象;而Plots是Julia原生绘图库,仅支持组合自身生成的Plot对象,两者生态不兼容,直接传入会触发类型匹配错误。
解决方案
提供两种可行思路,根据需求选择:
思路1:全程使用Plots.jl绘图(推荐)
Plots.jl原生支持热力图绘制,无需依赖Seaborn,所有图都属于Plots生态,可直接组合布局:
using Plots # 用Plots绘制热力图 heatmap_plot = heatmap([1 1.5; 3 2.8]) # 绘制柱状图 bar_plot = bar([1,1.5, 2.,7]) # 组合布局 combo_plot = plot(heatmap_plot, bar_plot, layout=(2,1))
思路2:全程使用Matplotlib/Seaborn生态绘图
如果必须使用Seaborn的热力图,可借助Matplotlib的子图布局机制,将Seaborn热力图和Matplotlib柱状图放在同一画布中:
using PyPlot, Seaborn # 创建2行1列的子图布局 fig, (ax_heatmap, ax_bar) = subplots(2, 1, figsize=(6, 8)) # 在第一个子图绘制Seaborn热力图 Seaborn.heatmap([1 1.5; 3 2.8], ax=ax_heatmap) # 在第二个子图绘制柱状图(注意x轴索引与数据对应) ax_bar.bar(1:4, [1,1.5, 2.,7]) # 自动调整子图间距 tight_layout()
内容的提问来源于stack exchange,提问作者Jen-Feng Hsu
相关产品推荐
相关产品推荐

