2014-07-24 33 views
25

'daki onay etiketlerini belirtin. Sayıları ızgaralı grafiklerde çizmeye çalışıyorum, ancak bu konuda nasıl gittiğimi anlayamıyorum.Kılavuz aralığını değiştirin ve Matplotlib

  1. arayla ızgaralar noktalı mı sadece her 20

  2. Ben kene arsa dışında olmak istiyorum başlıca kene etiketleri var: etmek istiyorum.

  3. Böyle here ve here gibi potansiyel çiftleri için kontrol ettikten

bu ızgaraları içinde "sayar" Var, ama onu anlamaya edemedik.

Bu benim kodum.

import matplotlib.pyplot as plt 
from matplotlib.ticker import MultipleLocator, FormatStrFormatter 

for key, value in sorted(data.items()): 
    x = value[0][2] 
    y = value[0][3] 
    count = value[0][4] 

    fig = plt.figure() 
    ax = fig.add_subplot(111) 

    ax.annotate(count, xy = (x, y), size = 5) 
    # Overwrites and I only get the last data point 

    plt.close() 
    # Without this, I get "fail to allocate bitmap" error 

plt.suptitle('Number of counts', fontsize = 12) 
ax.set_xlabel('x') 
ax.set_ylabel('y') 
plt.axes().set_aspect('equal') 

plt.axis([0, 1000, 0, 1000]) 
# This gives an interval of 200 

majorLocator = MultipleLocator(20) 
majorFormatter = FormatStrFormatter('%d') 
minorLocator = MultipleLocator(5) 
# I want minor grid to be 5 and major grid to be 20 
plt.grid() 

filename = 'C:\Users\Owl\Desktop\Plot.png' 
plt.savefig(filename, dpi = 150) 
plt.close() 

Bu benim elde ettiğim şeydir.

This is what I get.

Ben de ayrıca ... herkes bu sorunu bana yardımcı LÜTFEN Could sorun yaşıyorum veri noktalarını, üzerine yazmak bir sorun var?

cevap

77

Kodunuzda birçok sorun var.

İlk büyük olanlar:

  1. Sen yeni bir şekil ve fig = plt.figure ve döngünün ax = fig.add_subplot(1,1,1) dışında koymak → Döngünüzden her tekrarında yeni eksenleri yaratıyor.

  2. Konumlandırıcıları kullanmayın. Doğru anahtar kelimelerle ax.set_xticks() ve ax.grid() işlevlerini çağırın.

  3. plt.axes() ile yeniden yeni bir eksen oluşturuyorsunuz. ax.set_aspect('equal') kullanın.

küçük şeyler: Sen objektif sözdizimi ile plt.axis() gibi MATLAB benzeri sözdizimi karıştırmak olmamalıdır. Kullanım ax.set_xlim(a,b) ve ax.set_ylim(a,b)

Bu çalışma minimal örnek olmalıdır:

import numpy as np 
import matplotlib.pyplot as plt 

fig = plt.figure() 
ax = fig.add_subplot(1, 1, 1) 

# Major ticks every 20, minor ticks every 5 
major_ticks = np.arange(0, 101, 20) 
minor_ticks = np.arange(0, 101, 5) 

ax.set_xticks(major_ticks) 
ax.set_xticks(minor_ticks, minor=True) 
ax.set_yticks(major_ticks) 
ax.set_yticks(minor_ticks, minor=True) 

# And a corresponding grid 
ax.grid(which='both') 

# Or if you want different settings for the grids: 
ax.grid(which='minor', alpha=0.2) 
ax.grid(which='major', alpha=0.5) 

plt.show() 

Çıktı şudur:

Ålot output

+2

Cevabınız için çok teşekkür ederiz! Sorunlarımı çözdün! Dışarıdaki keneleri ayarlamak için, sadece ax.tick_params (= 'her iki', direction = 'out') eklemek zorunda kaldım. – owl