2016-04-07 19 views
0

kullanılırken gösterilmiyor İki grafik, iki farklı y ekseni ile aynı şekle çizim yapmak istiyorum. Buna ek olarak, bir ızgara eklemek ve arsa pdf olarak kaydetmek istiyorum.Ana eksen, ızgara

Sorunum - bu kılavuz doğru çizilirken - ana eksen artık gösterilmiyor. Onlar nasıl çizilebilir? matplotlib 1.5.1 ve Python 2.7.11 kullanıyorum. İşte

komplodur:

enter image description here

Ve burada kullanıyorum kodudur:

import matplotlib.pyplot as plt 
import numpy as np 
from matplotlib.backends.backend_pdf import PdfPages 

pp = PdfPages('myplot.pdf') 

x = np.linspace(0.1, 10, 100) 
y1 = np.exp(x) 
y2 = np.log(x) 

fig = plt.figure() 
ax1 = fig.add_subplot(111) 
ax1.plot(x, y1, '-ro', markersize=5, label='y1') 
ax1.set_ylim(-0.1, 1.1 * max(y1)) 
ax1.set_ylabel('y1', fontsize=20) 
ax1.legend(loc='upper left') 
ax1.grid(ls='dotted', c='k') 
ax1.patch.set_facecolor('white') 

ax2 = ax1.twinx() 
ax2.grid(False) 
ax2.plot(x, y2, 'b-', label='y2') 
ax2.set_ylim(-0.1, 1.1 * max(y2)) 
ax2.set_ylabel('y2', fontsize=20) 
ax2.legend(loc='upper right') 
plt.xlim([-0.5, 1.05 * max(x)]) 
ax1.set_xlabel('x', fontsize=20) 

pp.savefig(fig) 
pp.close() 
plt.close(fig) 
+0

Bu benim için çalışıyor ... (Python 3.4.4 Mac OS) ancak bir "RuntimeWarning atar: günlüğünde karşılaşılan sıfıra böl" –

+0

@ReblochonMasque: Tam olarak aynı kodu mu kullanıyorsunuz? Aldığın arsa benimkinden farklı mı görünüyor? RunTimeWarning görünür, çünkü günlük (0) 'hesaplanır (bunu değiştirdim). – Cleb

+0

Evet, ekseni ve tuvalin etrafındaki bir kareyi gösterir. Bir saniye içinde png yayınlayacağım. –

cevap

1

Bu doğru eklenen png olduğu gibi eksenini gösteren arsa ile benim için çalışıyor burada altında. Aşağıdakiler için

aynı çıkışı:

  • Python 3.4.4, iPython, Jupyter notebook, matplotlib 1.5.1
  • Python 2.7.11, iPython, Jupyter notebook, matplotlib 1.5.?

enter image description here

kullanılan kod bu biridir - aynı bir plt.show hariç yayınlanmıştır olarak() png görüntüsünü oluşturmak için ekledim.

import matplotlib.pyplot as plt 
import numpy as np 
from matplotlib.backends.backend_pdf import PdfPages 

pp = PdfPages('myplot.pdf') 

x = np.linspace(0, 10, 100) 
y1 = np.exp(x) 
y2 = np.log(x) 

fig = plt.figure() 
ax1 = fig.add_subplot(111) 
ax1.plot(x, y1, '-ro', markersize=5, label='y1') 
ax1.set_ylim(-0.1, 1.1 * max(y1)) 
ax1.set_ylabel('y1', fontsize=20) 
ax1.legend(loc='upper left') 
ax1.grid(ls='dotted', c='k') 
ax1.patch.set_facecolor('white') 

ax2 = ax1.twinx() 
ax2.grid(False) 
ax2.plot(x, y2, 'b-', label='y2') 
ax2.set_ylim(-0.1, 1.1 * max(y2)) 
ax2.set_ylabel('y2', fontsize=20) 
ax2.legend(loc='upper right') 
plt.xlim([-0.5, 1.05 * max(x)]) 
ax1.set_xlabel('x', fontsize=20) 

#plt.show() 

pp.savefig(fig) 
pp.close() 
plt.close(fig) 

Bir ipython çekirdek kullanıyorsanız, render müdahale önceki çalışmalarından bazı kalıntı ayarları olabilir? Taze bir çekirdek ile denediniz mi?

+0

Beklenen çıktı bu olurdu. Matplotlib'in hangi versiyonunu kullanıyorsunuz (1.5.1 kullanıyorum)? Python 2.7'de deneyebileceğiniz herhangi bir şans. – Cleb

+0

Evet, matplotlib 1.5.1 python üzerinde 3.4.4 mac os. Aynı sonucu, mac os üzerinde python 2.7.11 ile eşleştiriyorum (her iki çekirdek de aynı anda çalıştığı için şanslısınız;)). Çekirdek her iki durumda da jupyter defterinden koştu. –

+0

Tamam, komut satırından çalıştırılıyor, doğru bir şekilde sonuçlanıyor. Şimdi hala neden yukarıdaki oyuncak örnek için çalışır ama gerçek arsa (hala nerede başarısız) için işe yaradığını anlamaya var ... Yardımlarınız için teşekkürler - Ben şimdiye kadar bunu ve daha sonra kabul ediyorum ... – Cleb