我在写一个小班,里面有适合我需要的所有参数,
但是我在定义要完成的3个周期时遇到了一个问题。
我要做的是:定义3种循环类型(cycle0,cycle1,cycle2),然后在包含几个rcParams
的字典中设置'axes.prop_cycle'
3个循环定义如下:
cycle0 = plt.cycler("color", colors)
cycle1 = plt.cycler("color", colors) + plt.cycler("linestyle", linestyles)
cycle2 = plt.cycler("color", colors) * plt.cycler("linestyle", linestyles)
当我选择使用cycle0时,问题出现了:
'axes.prop_cycle': cycle0,
这组颜色(我选择的)在线型方面有不同的长度,但是对于cycle0,我不想使用线型! 我如何处理这个问题?到目前为止,当我必须使用cycle0时,我必须注释掉cycle1,当我想使用它时,我必须注释掉cycle1
编辑 错误是这样的:
ValueError: Can only add equal length cycles, not 6 and 8
但在myparams的定义中,我使用
'axes.prop_cycle': cycle0,
编辑 最小可编译示例:
import numpy as np
import matplotlib.pyplot as plt
def _plot(*args,**kwargs):
linestyles = [(0, ()),(0, (1, 1)),(0, (5, 10)),(0, (5, 5)),(0, (5, 1)),(0, (3, 10, 1, 10)),(0, (3, 5, 1, 5)),(0, (3, 5, 1, 5, 1, 5)) ]
colors = ['#3B4CC0','#7C9FF9','#C0D4F5','#F2CBB7','#EE8568','#B40426']
variable = [*args]
if len(variable) % 3 != 0:
print('Error variable must be coupled (even number)')
raise AttributeError('you must give 2 array x,y followed by string label for each plot')
parameters = {**kwargs}
cycle0 = plt.cycler("color", colors)
cycle1 = plt.cycler("color", colors) + plt.cycler("linestyle", linestyles)
cycle2 = plt.cycler("color", colors) * plt.cycler("linestyle", linestyles)
myparams = {
'axes.prop_cycle': cycle0
}
plt.rcParams.update(myparams)
fig,ax = plt.subplots(1,figsize=(7,4.2))
for i in range(0,len(variable)-1,3):
plt.plot(variable[i],variable[i+1], linewidth=3, label= variable[i+2])
plt.grid(linestyle='--', dashes=(5,7))
plt.show()
def main():
x = np.linspace(0,2*np.pi,100)
y1 = np.sin(x)
y2 = np.sin(2*x)
y3 = np.sin(4*x)
_plot(x,y1,'sin(x)',x,y2,'sin(2x)',x,y3,'sin(3x)')
if __name__ == '__main__' :
main()
如果你改为评论cycle1,这就行了!你知道吗
编辑也许我解释得不好,这个代码(cycle1)是我使用的一个循环 用不同的配色方案。。我所报道的只是一个例子:
另外,如果我在rcParams列表中使用cycle0(这里我已经报告了),则只使用蓝色到红色的颜色方案。但是在我的课上有很多的颜色方案和很多的线型。。。。中显示的参数
myparams = {
......
'axes.prop_cycle': cycle0
......
}
是从一个字典中给出的(看起来像是{u plot的定义),我想找出一个方法,让这个循环1作为我的'axes.prop_cycle'
的选项,这样我就可以不加注释地切换这行代码(循环1….)
问题出在
cycle1
,而不是cycle0
。您可以删除该行,因为它从未在代码中使用。否则你需要确保有相同长度的自行车。你知道吗
你可以在颜色循环中再加两种颜色
这样,线型和颜色都有8个元素。你知道吗
相关问题 更多 >
编程相关推荐