2009-02-13 7 views
10

matplotlib'u kullanarak Python'da bir sürü veri noktasını (binlerce) çizmeye çalışıyorum, böylece her bir işaretleyicinin çok küçük ve hassas olmasını istiyorum. Mümkün olan en küçük basit işaretçiyi nasıl alabilirim? Ben verileri çizmek için bu komutu kullanın: Python grafiği: matplotlib.pyplot'un işaretleyicilerimin stilini zorlamasını nasıl sağlayabilirim?

matplotlib.pyplot(x , y ,'.',markersize=0.1,linewidth=None,markerfacecolor='black') 

O zaman ben de pl.show() ile bakmak ve daha sonra kaydedin. Veya doğrudan kaydetmek için plt.savefig('filename.ps') kodunu kullanın. Sorun şu: ben GUI dosya görüntülemek için pl.show() kullandığınızda küçük küçük siyah işaretleri ile harika görünüyor, ancak ben bir dosyaya show() GUI kaydederken veya doğrudan savefig kullanın ve sonra farklı görünüyorgörüntülemek ! Her bir işaretleyici etrafında her zaman mavi çizgileri kazanmıştır (her noktada başlangıçta mavi çizgileriyle bağlanmış gibi başlamış gibi) ve stil yanlıştır. Kaydedildiği zaman stili neden değiştiriyor? Python'un işaretleyicilerin stilini zorlamasını nasıl engellerim? Ve evet, CairoPlot gibi bazı alternatif paketlere baktım ama şimdilik matplotlib kullanmaya devam etmek istiyorum.

Güncelleme: O PNG ilk renkler tamam söndürmeye yapar kaydetmek çıkıyor ama (PDF dahil edilmek üzere) daha sonra bir .ps olarak tekrar kaydetmek istediğiniz zaman görüntünün bir dönüşüm zorlar ve sonra kaliteyi kaybediyorum. Dosyanın vektör yapısını nasıl koruyabilirim ve doğru biçimlendirmeyi nasıl alabilirim?

+0

Peki, çizim noktaları için, CairoPlot'un gövde sürümü ScatterPlot sınıfına sahiptir. Bunu kullanarak, işaretçinin yarıçapını tanımlayabilirsiniz, böylece en küçük seçenek olarak 1'e ayarlayabilirsiniz. CairoPlot kullanmamanız için özel bir neden var mı? – Rodrigo

cevap

11

Güzel görünümlü vektörel çıktı için, '.' işaretleyici stilini kullanmayın. Ör. 'o' (daire) veya 's' (kare) örneğin (seçenekler için help(plot) bakınız) ve uygun küçük bir şeye markersize kelime argüman ayarlayın: '.' (nokta) bir addedilecek bir az güzel sonuçlar üretir

plot(x, y, 'ko', markersize=2) 
savefig('foo.ps') 

O matplotlib'de hata, ancak "point" ne vektör grafiği biçiminde anlamına gelir?

2

Eğer yapmadıysanız, rasterleştirici bir motoru kaydetmeyi denemelisiniz - bunu bir PNG dosyasına kaydedin ve düzeltip düzeltmediğini görün. Vektör grafiğine ihtiyacınız varsa, PDF'ye kaydetmeyi ve harici bir yardımcı programla dönüştürmeyi deneyin. Daha önce PS motorunda, Agg veya PDF motorları ile tasarruf ederek ve harici olarak dönüştürerek çözülmüş problemlerim vardı.

+0

Evet, bu iş etrafında çalışır. BTW aynı işi yapıyoruz. – Alex

6

',' Nokta şeklini denediniz mi? "pixels" (şekiller yerine küçük noktalar) oluşturur.

Bu şekilde markersize seçeneği ile oynayabilirsiniz?