我尝试用多种颜色绘制一条线,为此我遵循this示例。
导出的pdf结果在行的开头和结尾处有中断,而我希望结果是平滑的行而没有中断。 LineCollection用一种颜色绘制每一行,但我也可以平滑地改变颜色。
我尝试为每一行添加round ends,但它不会影响导出的pdf结果(而plt.show()绘图看起来更好并且有圆边)。
参考代码:
lc = mcoll.LineCollection(segments, array=z, cmap='copper', linewidth=3)
ax.add_collection(lc)
plt.savefig("{}_l.pdf".format(filenamebase))
答案 0 :(得分:0)
当我使用svg格式然后使用inkscape转换绘图时问题已经消失。虽然最初的问题仍然存在,但是对于pdf的savefig来说显然有问题,但是svg-> pdf技巧可以避免这个问题,并且会产生圆的边缘。
下面的脚本实现了这个技巧(并且还生成了pdf + tex文件,以便于嵌入到文章中)。
def export_plot(filenamebase, export_area_drawing = True, export_latex = True):
plt.savefig("{}_l.pdf".format(filenamebase))
if export_latex:
ead = ''
if export_area_drawing:
ead = '--export-area-drawing'
el = '--export-latex'
plt.savefig("{}.svg".format(filenamebase))
cmd = ''' env -u LD_LIBRARY_PATH inkscape -T -f {0}.svg \
--export-background-opacity=0 \
{1} {2} --export-pdf={0}.pdf'''.format(filenamebase, ead, el)
os.system(cmd)
os.system('rm {}.svg'.format(filenamebase))