2012-09-15 15 views
6

Matplotlib'de bazı kontur grafikleri yapıyorum ve çizgi uzunlukları çok uzun. Noktalı çizgi de iyi görünmüyor. Çizgi uzunluğunu manuel olarak ayarlamak isterim. Ben plt.plot() kullanarak basit bir çizimi yaparken tam çizgi uzunluğunu ayarlayabilirim, ancak aynı şeyi bir kontur çizimiyle nasıl yapacağımı anlayamıyorum.Bir matplotlib kontur çiziminde çizgi uzunluğunu nasıl ayarlayabilirim

ben aşağıdaki kod çalışması gerektiğini düşünüyorum, ama hata alıyorum:

import numpy as np 
import matplotlib.mlab as mlab 
import matplotlib.pyplot as plt 


delta = 0.025 
x = np.arange(-3.0, 3.0, delta) 
y = np.arange(-2.0, 2.0, delta) 
X, Y = np.meshgrid(x, y) 
Z1 = mlab.bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0) 
Z2 = mlab.bivariate_normal(X, Y, 1.5, 0.5, 1, 1) 
# difference of Gaussians 
Z = 10.0 * (Z2 - Z1) 

plt.figure() 

CS = plt.contour(X, Y, Z, 6, colors='k',linestyles='dashed') 

for c in CS.collections: 
    c.set_dashes([2,2]) 

plt.show() 
: Burada
File "/Library/Python/2.7/site-packages/matplotlib-1.2.x-py2.7-macosx-10.8-intel.egg/matplotlib/backends/backend_macosx.py", line 80, in draw_path_collection 
    offset_position) 
TypeError: failed to obtain the offset and dashes from the linestyle 

MPL örneklerinden uyarlanan ben yapmaya çalışıyorum şeyin örneğini görüyorsunuz

Teşekkürler! Neredeyse her şey için

cevap

9

.

Bu açıklanmıştır:

for c in CS.collections: 
    c.set_dashes([(0, (2.0, 2.0))]) 

orada bir print c.get_dashes() koymuştu varsa, (o ne yaptım) dışarı bulurdum.

Belki de çizgi stilinin tanımı biraz değişti ve eski bir örnekte çalışıyordunuz.

  • set_dashes(ls)

    alias for set_linestyle

  • set_linestyle(ls)

    Set the linestyle(s) for the collection.

    ACCEPTS: [‘solid’ | ‘dashed’, ‘dashdot’, ‘dotted’ | (offset, on-off-dash-seq) ]

Yani [(0, (2.0, 2.0))] yılında, 0 ofset ve daha sonra tanımlama grubu açma-kapama tekrar kalıptır:

collections documentation bu söyleyebilmeli.

+0

Çok teşekkürler! (Ofset, (off, off)) formatını da yorgundum ama köşeli parantez içinde parantezlere ihtiyacım olduğunu fark etmemiştim. Benim arazilerim harika görünüyor. Sadece günümü yaptın. Sağol Dan. – DanHickstein

İlgili konular