Matplotlib:如何制作由点(圆圈)组成的虚线?

6

我有两个平滑的依赖关系y1(x)和y2(x),其中x的分布是不规则的。我希望这些依赖关系用虚线(linestyle=':')描述。现在在*.pdf文件中显示的是这里

以下是代码:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()

x  = [0, 1, 2,  3,  5,  7, 13, 14]
y1 = [3, 5, 6,  8,  7,  6,  9, 10]
y2 = [1, 7, 8, 10, 14, 18, 20, 23]

ax.plot(x, y1, 
        linestyle = ':',
        linewidth = 4,
        color = 'Green')

ax.plot(x, y2, 
        linestyle = ':',
        linewidth = 4,
        color = 'Blue')

ax.set_ylabel('y(x)')
ax.set_xlabel('x')

plt.savefig("./test_dotted_line.pdf")

我尝试过使用 dashes = [2, 2] (和其他组合)以及 dash_capstyle = 'round',但结果看起来不理想。
有没有可能生成由“圆形”点组成的虚线?

1
你能展示一些可运行的代码并且产生相同的行为吗? - DavidG
我不太明白你的意思。你所说的“相同行为”是什么意思? - glanz
对我来说,linestyle=":" 给了一条虚线。 - Ohad Eytan
2
@glanz 目前您还没有提供任何代码。如果您能提供一个最小、完整且可验证的示例,那将会更有帮助。 - DavidG
@DavidG 我已经相应地修改了这篇文章。 - glanz
显示剩余2条评论
5个回答

6

尝试使用这个线条样式:

ax.plot(x, y1, 
    linestyle = (0,(0.1,2)),
    dash_capstyle = 'round',
    linewidth = 4,
    color = 'Green')

输出结果如下: 输出结果

我发现使用 linestyle=(0, (0, 2.57)) 可以得到更圆的点(即不会拉长),并且间距与使用 ':' 得到的默认方形点非常接近。 - jmd_dk

2
这很有用。
ax.plot(x, y1, linestyle = '--',
    linewidth = 4,
    color = 'Green',
    dashes=(0.5, 5.),
    dash_capstyle='round'

您需使用破折号,设置dash_capstyle='round',然后调整dashes=(ink_points_on, ink_points_off)以获得所需大小的点。


0

删除 linewidth。然后它会打印小正方形 - 这样就足够好了吗?

您还可以通过 dash_capstyle = "round" 将正方形四角变为圆形。


当然,我试过了。但是我无法让点呈现出“圆形”。 - glanz

0
你可以使用Matplotlib的markevery属性。
ax.plot(x, y2, 'b.',
        markevery = 4, 
        linewidth = 4)

并且可以与任何标记一起使用!


0
如果您想要带有破折号和点的线条,则使用 linestyle='-.'
x.plot(x, y2, 
    linestyle = '-.',
    linewidth = 4,
    color = 'Blue')

如果您想让您的线图每个数据点都有圆形标记,请使用marker='o'
x.plot(x, y2, 
    linestyle = '-',
    linewidth = 4,
    marker='o',
    color = 'Blue')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接