Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何在蓝色和白色之间交替图形的颜色?_Python 3.x_Matplotlib - Fatal编程技术网

Python 3.x 如何在蓝色和白色之间交替图形的颜色?

Python 3.x 如何在蓝色和白色之间交替图形的颜色?,python-3.x,matplotlib,Python 3.x,Matplotlib,我有一个包含50个子列表的列表D。这些子列表中的元素数量正在减少。我通过 for i, array in enumerate(D): plt.scatter([i]*len(array), array) 我有50个函数从St_Sp获取值,Y是一个包含50个元素的列表,每个元素都是每个函数的输出。我将这些功能可视化 fig, ax = plt.subplots() for i in range(len(Y)): ax.plot(St_Sp, Y[i]) 我发现太多的颜色不

我有一个包含50个子列表的列表
D
。这些子列表中的元素数量正在减少。我通过

for i, array in enumerate(D):
    plt.scatter([i]*len(array), array)

我有50个函数从
St_Sp
获取值,
Y
是一个包含50个元素的列表,每个元素都是每个函数的输出。我将这些功能可视化

fig, ax = plt.subplots()
for i in range(len(Y)):
    ax.plot(St_Sp, Y[i])


我发现太多的颜色不容易被眼睛看到。我想问一下,如何在蓝色和白色之间交替使用图形的颜色?我的意思是
D
中函数和点的颜色是白色>蓝色>白色>蓝色

你能详细说明一下怎么做吗


导入软件包 将numpy作为np导入 将scipy.linalg作为la导入 导入时间 导入matplotlib 将matplotlib.pyplot作为plt导入 #####初始条件 N=100 拉姆达=7 mu=2 a=np.exp(-0.05) r=-np.log(a.copy()) St_Sp=np.arange(-N,N+1) 卡片=标准形状[0] #####定义内部模拟生成器 定义LL(x,y): 如果x==N或x==N:re=0 elif x-y==-1:re=lamda elif x-y==1:re=mu elif x-y==0:re=-(μ+λ) 其他:re=0 返回re def L(x): 返回-LL(x,x) #####定义函数φ defφ(x): 返回最大值(x,0) φ=np矢量化(φ) #####定义向量b b=np.阵列(φ(标准点)) #####定义函数Psi def Psi(x): 返回L(x)/(L(x)+r) Psi=np.矢量化(Psi) #####生成一个布尔向量,其所有元素均为False d=np.array([0]*Card).astype(bool) #####定义矩阵A A=np.零((卡片,卡片)) 对于范围内的i(卡): 对于范围内的j(卡): 如果(i!=j)和(L(St_Sp[i])!=0: A[i,j]=LL(St_Sp[i],St_Sp[j])/L(St_Sp[i]) elif(i!=j)和(L(St_Sp[i])==0: A[i,j]=0 elif(i==j)和(Psi(St_Sp[i])!=0: A[i,j]=-1/Psi(标准压力[i]) else:A[i,j]=1 #####行的行名称 行=np.arange(0,卡片) #####定义矩阵B B=np.零((卡片,卡片)) 对于范围内的i(卡): 对于范围内的j(卡): 如果我j: B[i,j]=LL(St_Sp[i],St_Sp[j]) else:B[i,j]=LL(St_Sp[i],St_Sp[j])-r 开始=时间。时间() #####生成I_0 I=[np.array([1]*Card.astype(bool),d.copy()] Z=np.array(b.copy()) Z=Z.aType(浮动) D=[St_Sp]
index0=np.matmul(B,Z)最简单的方法是设置a。绘图的默认颜色将在给定颜色之间循环,而不是在10种典型颜色之间循环

从循环器导入循环器
自定义循环器=循环器(颜色=['白色','蓝色')
plt.gca().set_prop_cycle(自定义循环器)
对于i,枚举中的数组(D[:-1]):
plt.散射([i]*透镜(阵列),阵列)
plt.散射([len(D)-1]*len(D[-1]),D[-1],颜色为深红色)
图,ax=plt.子批次()
ax.set\u prop\u cycle(自定义循环器)
对于范围内的i(透镜(Y)-1):
ax.绘图(St_Sp,Y[i])
ax.绘图(圣普,Y[len(Y)-1],颜色为深红色)
plt.show()

最简单的方法是设置一个。绘图的默认颜色将在给定颜色之间循环,而不是在10种典型颜色之间循环

从循环器导入循环器
自定义循环器=循环器(颜色=['白色','蓝色')
plt.gca().set_prop_cycle(自定义循环器)
对于i,枚举中的数组(D[:-1]):
plt.散射([i]*透镜(阵列),阵列)
plt.散射([len(D)-1]*len(D[-1]),D[-1],颜色为深红色)
图,ax=plt.子批次()
ax.set\u prop\u cycle(自定义循环器)
对于范围内的i(透镜(Y)-1):
ax.绘图(St_Sp,Y[i])
ax.绘图(圣普,Y[len(Y)-1],颜色为深红色)
plt.show()

非常感谢您的帮助!这正是我要找的。只是一个无关紧要的问题:你有什么建议来可视化这些数据吗?恐怕我对数据的含义理解不够,无法给出好的可视化建议。实际上,
D
是一个集合列表,其中
D[n+1]
D[n]
的一个适当子集(精化)。我的意思是,在每次迭代之后,集合
D[n]
变得更小。以类似的方式,在每次迭代之后,函数
f\n
的值变大。我想把这种演变形象化。我的意思是集合
D[n+1]
D[n]
的精化,函数
f_{n+1}
f_n
的精化。改进的表现是
D[n+1]
元素的数量越来越少,而
f{n+1}
的值越来越大。嗨@JohanC,我的教授刚刚要求在所有地方都用蓝色,除了最后一个
D\n
是红色。我希望你能帮助我修改你的代码来实现这个目标。非常感谢你的帮助!非常感谢你的帮助!这正是我要找的。只是一个无关紧要的问题:你有什么建议来可视化这些数据吗?恐怕我对数据的含义理解不够,无法给出好的可视化建议。实际上,
D
是一个集合列表,其中
D[n+1]
D[n]
的一个适当子集(精化)。我的意思是,在每次迭代之后,集合
D[n]
变得更小。以类似的方式,在每次迭代之后,函数
f\n
的值变大。我想把这种演变形象化。我的意思是集合
D[n+1]
D[n]
的精化,函数
f_{n+1}
f_n
的精化。改进的表现是
D[n+1]
元素的数量越来越少,而
f{n+1}
的值越来越大。嗨@JohanC,我的教授刚刚要求在所有地方都用蓝色,除了最后一个
D\n
是红色。我希望你能帮助我修改你的代码来实现这个目标。非常感谢你的帮助!
##### Import packages
import numpy as np
import scipy.linalg as la
import time
import matplotlib
import matplotlib.pyplot as plt

##### Initial conditions
N = 100
lamda = 7
mu = 2
a = np.exp(-0.05)
r = - np.log(a).copy()
St_Sp = np.arange(- N, N + 1)
Card = St_Sp.shape[0]

##### Define infintesimal generator
def LL(x, y):
    if x == N or x == - N: re = 0
    elif x - y == - 1: re = lamda
    elif x - y == 1: re = mu
    elif x - y == 0: re = - (mu + lamda)
    else: re = 0
    return re

def L(x):
    return - LL(x, x)

##### Define function Phi
def Phi(x):
    return max(x, 0)
Phi = np.vectorize(Phi)

##### Define vector b
b = np.array(Phi(St_Sp))

##### Define function Psi
def Psi(x):
    return L(x) / (L(x) + r)
Psi = np.vectorize(Psi)

##### Generate a Boolean vector whose all elements are False
d = np.array([0] * Card).astype(bool)

##### Define matrix A
A = np.zeros((Card, Card))
for i in range(Card):
    for j in range(Card):
        if (i != j) & (L(St_Sp[i]) != 0):
            A[i, j] = LL(St_Sp[i], St_Sp[j]) / L(St_Sp[i])
        elif (i != j) & (L(St_Sp[i]) == 0):
            A[i, j] = 0
        elif (i == j) & (Psi(St_Sp[i]) != 0):
            A[i, j] = - 1 / Psi(St_Sp[i])
        else: A[i, j] = 1

##### Row names of A
rows = np.arange(0, Card)

##### Define matrix B
B = np.zeros((Card, Card))
for i in range(Card):
    for j in range(Card):
        if i != j:
            B[i, j] = LL(St_Sp[i], St_Sp[j])
        else: B[i, j] = LL(St_Sp[i], St_Sp[j]) - r

start = time.time()        

##### Generate I_0
I = [np.array([1] * Card).astype(bool), d.copy()]

Z = np.array(b.copy())
Z = Z.astype(float)       
D = [St_Sp]
index0 = np.matmul(B, Z) <= 0
index1 = ~ index0

Y = [b.copy()]

##### Iterations
for i in range(1, Card):    
    I = [I[0] & index0, I[1] | index1]
    Z = np.array(b.copy())
    Z = Z.astype(float)

    A1 = A[np.ix_(rows[I[1]], rows[I[1]])]    
    A2 = A[np.ix_(rows[I[1]], rows[I[0]])]

    Z[I[1]] = la.solve(A1, - np.matmul(A2, Z[I[0]]))

    Y = np.concatenate((Y, [Z]))
    D.append(St_Sp[I[0]])

    index = np.matmul(B[I[0]], Z) <= 0

    index0, index1 = d.copy(), d.copy()
    index0[I[0]], index1[I[0]] = index, ~ index

    if (I[0] == index0).all() == True: break

for i, array in enumerate(D):
    plt.scatter([i]*len(array), array)
    
fig, ax = plt.subplots()
for i in range(len(Y)):
    ax.plot(St_Sp, Y[i])