我正在尝试用seaborn绘制热图并将其导出到pgf,以便在Latex中轻松导入.这或多或少都有效,唯一困扰我的是颜色条被导出为额外的png.
因此,如果我将导出运行到pgf,我会得到以下结果:
这绝对是不合需要的,因为png不能很好地缩放.一些MWE:
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
df = pd.DataFrame.from_csv("test.csv", sep=',')
sns.set('paper', 'white', rc={'font.size': 10, 'axes.labelsize': 10, 'legend.fontsize': 8, 'axes.titlesize': 10,
'xtick.labelsize': 8,
'ytick.labelsize': 8, "pgf.rcfonts": False})
plt.rc('font', **{'family': 'serif', 'serif': ['Times']})
plt.rc('text', usetex=True)
fig = plt.figure()
ax = sns.heatmap(df, linewidths=.5)
fig.savefig('test.pdf')
fig.savefig('test.pgf')
Run Code Online (Sandbox Code Playgroud)
和test.csv的内容:
0,1,2,3,4
1,1,1,1,1
2,2,2,2,2
3,3,3,3,3
Run Code Online (Sandbox Code Playgroud)
有没有人有解决方案将颜色条包含在pgf输出中?
我有一个使用 matplotlib 生成的轮廓图。
import numpy as np
import matplotlib.pyplot as plt
X = np.linspace(-10, 10, 100)
Y = np.linspace(-10, 10, 100)
XX, YY = np.meshgrid(X, Y)
ZZ = XX**2 + YY**2
levels = np.linspace(0, 200, 10)
fig, ax = plt.subplots()
cf = ax.contourf(X, Y, ZZ, levels=levels)
cbar = fig.colorbar(cf)
Run Code Online (Sandbox Code Playgroud)
这会生成这个数字:
现在想象一下,由于某种原因,这个数字是通过一些功能的调用交给用户,用户只得到了ax,fig和cbar对象。
更新:我想这样做的原因是因为我必须以自动化的方式制作大量的等高线图。我已经在后端自动创建了轮廓图(在上面模糊地描述为“函数调用”)。但是对于某些情节,需要稍作修改才能生成精美的情节。因此,而不是操纵备份或者不必增加大量数额的每一种情况的选择,这将是很好,如果这对夫妻的我需要调整的数字+400出来的数字通过可调ax,fig和cbar对象。
现在只操作这些对象,我想放大,并重新调整颜色条和级别。
放大:
ax.set_xlim(2.5, 7.5)
ax.set_ylim(2.5, 7.5)
Run Code Online (Sandbox Code Playgroud)
更改颜色条和刻度上的限制:
new_clim = (0, 100)
# find location of the …Run Code Online (Sandbox Code Playgroud)