python pyplot产生带有不同破折号参数的线型循环

时间:2018-07-16 14:10:56

标签: python matplotlib inline-styles

我正在编写一个类,以生成符合我的几种需求的绘图! 我特别关注每个pyplot用户知道的线型的循环(颜色和线型),共有4种线型('-','-','-。',':') 但是有一个选项..“破折号= L,ES”(行,空白),目的是创建要在它们之间使用不同空格的行以进行跟踪...我如何在线型循环中管理此行?

我知道元组的正弦...但是我必须在哪里使用它?

这是我到目前为止定义的样式

def linestyles(self, style : str = 'ls1'):           
         linestyle = {}
         linestyle['ls1'] = ['-', '--', ':', '-.','-','--',':','-.'] 
         linestyle['ls10'] = ['-', '--', ':', '-.','-','--',':','-.','-','--'] 
         linestyle['llt8'] = ['-','--','-','--','-','--','-','--']
         linestyle['lp8'] = ['-',':','-',':','-',':','-',':']
         linestyle['llt10'] = ['-','--','-','--','-','--','-','--','-','--']
         linestyle['lp10'] = ['-',':','-',':','-',':','-',':','-',':']
         return linestyle[style]    

我必须在其中指定破折号??

编辑,问题是我不知道如何循环进入它们:

linestyle['ldash'] = ['(0, ()))','(0, (1, 10)))','(0, (1, 5)))','(0, (1, 1)))']

如果我在列表中插入它,将不起作用

编辑对不起,您在回答开始时就告诉我,不能是字符串!我解决了!考虑这个帖子关闭!非常感谢

1 个答案:

答案 0 :(得分:1)

元组不是字符串,它们应该是python元组。即使用(0, (1, 5))而不是'(0, (1, 5)))'

通常,一种指定线型的方法是通过linestyle参数。您可以遍历列表,

import matplotlib.pyplot as plt

linestyles = ["--", (0,(5,2,5,5,1,4))]

for i,ls in enumerate(linestyles):
    plt.plot([0,1],[i,i], linestyle=ls)

plt.show()

或创建一个线型循环器,

import matplotlib.pyplot as plt

linestyles = ["--", (0,(5,2,5,5,1,4))]
plt.rcParams["axes.prop_cycle"] += plt.cycler("linestyle", linestyles)

for i in range(2):
    plt.plot([0,1],[i,i])

plt.show()

在这两种情况下,生成的图看起来都是这样

enter image description here

另请参阅linestyles example