真的只有4个Matplotlib线型吗?

时间:2015-11-26 10:25:43

标签: python matplotlib plot

我一直在寻找matplotlib中的新线条样式,唯一可用的线条样式是[“ - ”,“ - ”,“ - 。”,“:”,]。 (样式选项['','','无',]不计算,因为它们只是隐藏线条。)

Matplotlib pyplot中真的只有4种线型吗?是否有任何扩展可以添加更多的线条样式?有没有办法自定义线条样式?如下三个字符行样式如何:

  • ' - 。':dash dash dot
  • ' - ..':dash dot dot
  • '...':点点(空格)
  • 'xxx':x在一行
  • '\ /':Zig zags即'\ / \ / \ / \ /'
  • '::':parrallel dots,ie :::::

这些只是扩展线条样式范围的一些想法。

2 个答案:

答案 0 :(得分:15)

您可以使用dashes kwarg设置自定义短划线样式。

来自docs

  

设置破折号序列,破折号序列以点开墨水。如果seq为空或seq =(None,None),则linestyle将设置为solid。

以下是基于您的一些建议的一些示例。显然,还有很多方法可以自定义它。

import matplotlib.pyplot as plt

fig,ax = plt.subplots(1)

# 3 dots then space
ax.plot(range(10), range(10),     dashes=[3,6,3,6,3,18],  lw=3,c='b')

# dash dash dot
ax.plot(range(10), range(0,20,2), dashes=[12,6,12,6,3,6], lw=3,c='r')

# dash dot dot
ax.plot(range(10), range(0,30,3), dashes=[12,6,3,6,3,6],  lw=3,c='g')

enter image description here

答案 1 :(得分:1)

我想从 2021 年开始添加一些其他信息。 在 matplotlib 版本中。 3.3.4 破折号选项略有不同。您首先循环显示破折号的类型,然后添加比率。

import matplotlib.pyplot as plt

plt.figure()

# dashed with dash length 10, space length 5
plt.hlines(3, 0, 5, linestyle="--", dashes=(0,(10,5)))

# dashed with dash length 5, space length 10
plt.hlines(6, 0, 5, linestyle="--", dashes=(0,(5,10)))

plt.ylim(0,10)
plt.show()

结果: Two differently dashed lines

有关详细信息,请查看 matplotlib documentation