如何绘制和导出具有光滑边缘的多色线条

时间:2018-04-23 14:05:28

标签: python matplotlib plot

我尝试用多种颜色绘制一条线,为此我遵循this示例。

导出的pdf结果在行的开头和结尾处有中断,而我希望结果是平滑的行而没有中断。 LineCollection用一种颜色绘制每一行,但我也可以平滑地改变颜色。 lines with multiple coulors

我尝试为每一行添加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))

1 个答案:

答案 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))