python matplotlib dash-dot-dot - 怎么做?

38 投票
1 回答
28543 浏览
提问于 2025-04-17 14:49

我正在使用Python和matplotlib来生成图形输出。
请问有没有简单的方法可以生成一种虚线-点-点的线条样式?
我知道有一些线条样式,比如'--'(虚线)、'-.'(虚点线)和':'(点线)。但是,'-..'并不能生成虚线-点-点的效果。
我查看过set_dashes这个命令,但它似乎只是用来控制虚线的长度和相邻虚线之间的间距。
一种可能的办法是把两条线重叠在一起:一条是虚线,虚线之间留有较大的间隔;另一条是点线,点的大小和虚线的宽度相同,并且每两个虚线之间放两个点。我相信这样是可以做到的,但我只是希望能有更简单的方法。
我是不是漏掉了什么选项?

1 个回答

62

你可以定义自定义的虚线样式

import matplotlib.pyplot as plt

line, = plt.plot([1,5,2,4], '-')
line.set_dashes([8, 4, 2, 4, 2, 4]) 
plt.show()

这里输入图片描述

[8, 4, 2, 4, 2, 4] 的意思是:

  • 8个单位是实线, (虚线)
  • 接着4个单位是空白,
  • 然后2个单位是实线, (点)
  • 再来4个单位是空白,
  • 接着2个单位是实线, (点)
  • 最后4个单位是空白。

@Achim提到你也可以指定 dashes 参数:

plt.plot([1,5,2,4], '-', dashes=[8, 4, 2, 4, 2, 4])
plt.show()

这样做会产生和上面一样的效果。

撰写回答