matplotlib 当保存为PDF时,删除Seaborn热图中分隔单元格的线条

iezvtpos  于 2023-10-24  发布在  其他
关注(0)|答案(2)|浏览(214)

我想删除保存的PDF中分隔单元格的线条。我尝试将线宽设置为0.0,但线条仍然显示。

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

data = pd.DataFrame(np.arange(10*10).reshape(10,10))
fig, ax = plt.subplots()
ax = sns.heatmap(data,linewidths=0.0)
fig.savefig('stackoverflow_lines.pdf')

该图像是生成的PDF的屏幕截图。

mcdcgff0

mcdcgff01#

这是一个问题,只有当保存到PDF文件,如果你使用类似PNG的东西,那么它会很好地工作。一个Github的问题已经提出了here与开发人员。
与此同时,开发人员mwaskom已经找到了一个修复程序,您可以将rasterized=True添加到seaborn.heatmap函数中,从而修复该问题。然后您的代码变为:

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

data = pd.DataFrame(np.arange(10*10).reshape(10,10))
fig, ax = plt.subplots()
ax = sns.heatmap(data,linewidths=0.0, rasterized=True)
fig.savefig('stackoverflow_lines.pdf')
dvtswwa3

dvtswwa32#

这个bug已经被开发者修复了--你现在可以保存为PDF而不显示任何网格线,方法是排除“linewidth”值。注意我还添加了“square=True”来给予方形输出。

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

data = pd.DataFrame(np.arange(10*10).reshape(10,10))
fig, ax = plt.subplots()
ax = sns.heatmap(data, square=True)
fig.savefig('stackoverflow_lines.pdf',format='pdf')

相关问题