2014-07-24 7 views
25

में टिक लेबल निर्दिष्ट करें, मैं ग्रिड वाले भूखंडों में गिनती करने की कोशिश कर रहा हूं, लेकिन मैं यह समझने में सक्षम नहीं हूं कि मैं इसके बारे में कैसे जाता हूं।ग्रिड अंतराल बदलें और मैटलप्लिब

  1. के अंतराल पर बिंदीदार ग्रिड है प्रमुख टिक लेबल है केवल हर 20

  2. मैं टिक साजिश बाहर होना चाहते हैं: करने के लिए मैं चाहता हूँ।

  3. उन ग्रिड

मैं ऐसे here और here के रूप में संभावित डुप्लीकेट के लिए जाँच की है अंदर "मायने रखता है" है, लेकिन मैं यह पता लगाने के लिए सक्षम नहीं किया गया है।

यह मेरा कोड है।

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() 

यही मुझे मिलता है।

This is what I get.

मैं भी डेटा बिंदुओं, जो मैं भी साथ ... किसी को भी कृपया मुझे इस समस्या के साथ मदद कर सकता है मुझे दिक्कत है अधिलेखित करने की एक समस्या है?

उत्तर

77

आपके कोड में कई समस्याएं हैं।

पहले बड़ा वाले:

  1. आप एक नया आंकड़ा और अपने पाश के हर यात्रा → डाल fig = plt.figure और लूप के ax = fig.add_subplot(1,1,1) बाहर में एक नया कुल्हाड़ियों बना रहे हैं।

  2. लोकेटर का उपयोग न करें। सही कीवर्ड के साथ ax.set_xticks() और ax.grid() फ़ंक्शंस को कॉल करें।

  3. plt.axes() के साथ आप फिर से एक नई अक्ष बना रहे हैं। ax.set_aspect('equal') का उपयोग करें।

मामूली बातें: आप उद्देश्य वाक्य रचना के साथ plt.axis() तरह MATLAB की तरह वाक्य रचना मिश्रण नहीं करना चाहिए। उपयोग ax.set_xlim(a,b) और ax.set_ylim(a,b)

यह एक काम कर रहे कम से कम उदाहरण होना चाहिए:

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() 

आउटपुट यह है:

Ålot output

+2

आप अपने जवाब के लिए बहुत बहुत धन्यवाद! आपने मेरे मुद्दों को हल किया! बाहर की टिक सेट करने के लिए, मुझे बस ax.tick_params (जो = 'दोनों', दिशा = 'बाहर') जोड़ना पड़ा। – owl

संबंधित मुद्दे