2013-04-17 41 views
11

Tôi muốn vẽ một đường cong trong mặt phẳng (x, y), trong đó màu của đường cong phụ thuộc vào giá trị của biến T. x khác là mảng có khối u 1D, y là mảng numpy 1D.Matplotlib vẽ một đường thẳng liên tục thay đổi màu

T=np.linspace(0,1,np.size(x))**2 
fig = plt.figure() 
ax = fig.add_subplot(111) 
ax.plot(x,y) 

Tôi muốn các dòng thay đổi từ màu xanh sang màu đỏ (sử dụng RdBu colormap) tùy thuộc vào giá trị của T (một giá trị của T tồn tại cho mọi x, y) cặp().

Tôi tìm thấy điều này, nhưng tôi không biết làm thế nào để làm cong nó vào ví dụ đơn giản của tôi. Làm thế nào tôi có thể sử dụng linecollection cho ví dụ của tôi? http://matplotlib.org/examples/pylab_examples/multicolored_line.html

Cảm ơn.

+1

bạn đã làm gì cố gắng? Vấn đề của bạn với cốt truyện ví dụ thứ hai là gì? Hãy đặt câu hỏi rõ ràng, để chúng tôi có thể giúp bạn. –

Trả lời

4

Một ý tưởng có thể là để thiết lập màu sắc sử dụng color = (R, G, B) sau đó chia cốt truyện của bạn vào phân khúc n và liên tục khác nhau hoặc là một trong những R, G hoặc B (hoặc kết hợp)

import pylab as plt 
import numpy as np 

# Make some data 
n=1000 
x=np.linspace(0,100,n) 
y=np.sin(x) 

# Your colouring array 
T=np.linspace(0,1,np.size(x))**2 
fig = plt.figure() 
ax = fig.add_subplot(111) 

# Segement plot and colour depending on T 
s = 10 # Segment length 
for i in range(0,n-s,s): 
    ax.plot(x[i:i+s+1],y[i:i+s+1],color=(0.0,0.5,T[i])) 

Hy vọng điều này là hữu ích

Greg

+0

Điều này hoạt động hoàn toàn tốt đẹp. Cám ơn rất nhiều! – Cokes

+0

@Cokes Nếu điều này giải quyết được vấn đề của bạn, bạn nên chấp nhận nó (dấu kiểm lớn ở bên trái) – tacaswell

+0

Bạn có thể làm tốt hơn một chút với 'LineCollection' – tacaswell

Các vấn đề liên quan