使用变量linesty在Python中绘制直线

2024-05-19 14:14:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含三列数据的数据文件:x和y表示要绘制的数据点的坐标;z是一个0或1的整数。当z=0时,我希望用实线绘制数据,当z=1时,我希望用虚线绘制。在

我想这样做的原因是,我的数据(x,y)表示微分方程的解,z表示这些解的稳定性——z=0表示稳定解,z=1表示不稳定。传统的表示稳定性的方法是用实线和虚线表示。在

如果我使用matplotlib来绘制(x,y),而忽略z,则得到以下绘图:enter image description here

我使用了以下代码:

import numpy as np
import matplotlib
import matplotlib.pyplot as plt

data = np.genfromtxt('bif.txt')
x, y, z = np.hsplit(data, 3)

font = {'size'   : 18}
matplotlib.rc('font', **font)

plt.plot(x, y, linestyle='-',color='b', linewidth=3.0)

plt.ylabel('$||u||_{2}$', fontsize=24, rotation=0, labelpad = 26)
plt.xlabel('$h$', fontsize=24)
plt.tight_layout()

plt.show()

实际上,根据z值,上面的图应该有虚线和实线的交替分支?在

编辑

以下是一些示例数据:

^{pr2}$

Tags: 数据importdatamatplotlib数据文件asnp绘制
1条回答
网友
1楼 · 发布于 2024-05-19 14:14:34

itertools.groupby是一个方便的函数,尽管我不知道使用它会对性能产生多大的影响。在

例如(从内存写入):

from itertools import groupby
...
for g_z, group in groupby(zip(zip(x, y), z), lambda p: p[1]):
    g_x, g_y = [], []
    for i in group:
        g_x.append(i[0][0])
        g_y.append(i[0][1])
    if g_z:
        plt.plot(g_x, g_y, linestyle='-')
    else:
        plt.plot(g_x, g_y, linestyle=' ')
...

相关问题 更多 >