在spyder 2.7中绘图时尝试更改默认颜色

时间:2017-04-30 17:05:19

标签: python numpy matplotlib plot spyder

我有一个程序需要300个粒子并将每个粒子移动300步。每当这些粒子中的每一个向前走时,我的程序都会绘制粒子的位置。我需要我的程序能够在绘制900个不同的点时以5种不同的颜色循环,以便更容易理解。任何想法如何设置颜色循环?我目前的代码包含在下面:

import numpy as np 

import matplotlib.pyplot as plt

q = np.zeros((300,300))

p = np.zeros((300,300))

mu = 1

R = 1.0/np.sqrt(2.0)

theta = R*2*np.pi

q[:,0] = np.random.uniform(-20.0, 20.0, 300)

p[:,0] = np.random.uniform(-20.0, 20.0, 300)

N = len(q)

for i in range(1,N):  

    q[:,i] = q[:,i-1]*np.cos(theta) + p[:,i-1]*np.sin(theta) + mu*np.sin(q[:,i-1])*np.sin(theta)

    p[:,i] = p[:,i-1]*np.cos(theta) - q[:,i-1]*np.sin(theta) + mu*np.sin(q[:,i-1])*np.cos(theta)


plt.plot(q, p, "o", markersize = 0.1)

2 个答案:

答案 0 :(得分:0)

你的意思是这样的吗?

colors = ('black', 'blue', 'red', 'green','orange')
n_colors = len(colors)

for offset, color in enumerate(colors):
    plt.plot(q[:,offset::n_colors], p[:,offset::n_colors],
             marker="o", markersize = 0.1, color=color)

从中得到的图像不是很有用,很难。但也许你可以从这里开始有用的东西...

如果您不希望关联积分,请尝试scatter plot

for offset, color in enumerate(colors):
    plt.scatter(q[:,offset::n_colors], p[:,offset::n_colors],
                marker="o", color=color, alpha=.4, s=1)

其中的情节:

scatter plot

答案 1 :(得分:0)

如果在循环中为每个步骤发出plot命令,则可以执行此操作。

首先使用colorization命令创建一个循环迭代器:

import itertools
col = itertools.cycle(['g', 'b', 'r', 'k'])

然后更改您的代码:

for i in range(1,N):  

    q[:,i] = q[:,i-1]*np.cos(theta) + p[:,i-1]*np.sin(theta) + mu*np.sin(q[:,i-1])*np.sin(theta)

    p[:,i] = p[:,i-1]*np.cos(theta) - q[:,i-1]*np.sin(theta) + mu*np.sin(q[:,i-1])*np.cos(theta)

    plt.plot(q[:,i], p[:,i], marker = "o", markersize = 0.1, color = next(col))