मैं लॉग भूखंडों में ठीक से काम कर ticks नाबालिग प्राप्त करने के लिए कई तरह से कोशिश की है। यदि आप टिक के मूल्य का लॉग दिखाने के साथ ठीक हैं तो आप matplotlib.ticker.LogFormatterExponent
का उपयोग कर सकते हैं। मुझे matplotlib.ticker.LogFormatter
की कोशिश याद है, लेकिन मुझे यह पसंद नहीं आया: अगर मुझे अच्छी तरह याद है तो यह सबकुछ base^exp
(0.1, 0, 1) में भी रखता है। दोनों मामलों में (साथ ही साथ अन्य सभी matplotlib.ticker.LogFormatter*
) आपको मामूली टिक प्राप्त करने के लिए labelOnlyBase=False
सेट करना होगा।
मैं एक कस्टम फ़ंक्शन बनाने और matplotlib.ticker.FuncFormatter
का उपयोग समाप्त कर दिया। मेरा दृष्टिकोण मानता है कि टिक पूर्णांक मानों पर हैं और आप आधार 10 लॉग चाहते हैं।
from matplotlib import ticker
import numpy as np
def ticks_format(value, index):
"""
get the value and returns the value as:
integer: [0,99]
1 digit float: [0.1, 0.99]
n*10^m: otherwise
To have all the number of the same size they are all returned as latex strings
"""
exp = np.floor(np.log10(value))
base = value/10**exp
if exp == 0 or exp == 1:
return '${0:d}$'.format(int(value))
if exp == -1:
return '${0:.1f}$'.format(value)
else:
return '${0:d}\\times10^{{{1:d}}}$'.format(int(base), int(exp))
subs = [1.0, 2.0, 3.0, 6.0] # ticks to show per decade
ax.xaxis.set_minor_locator(ticker.LogLocator(subs=subs)) #set the ticks position
ax.xaxis.set_major_formatter(ticker.NullFormatter()) # remove the major ticks
ax.xaxis.set_minor_formatter(ticker.FuncFormatter(ticks_format)) #add the custom ticks
#same for ax.yaxis
आप प्रमुख टिक नहीं निकालते हैं और subs = [2.0, 3.0, 6.0]
का उपयोग बड़ी और छोटी टिक का फ़ॉन्ट आकार अलग है मन
स्रोत
2013-06-20 09:16:57
कभी नहीं (इस कारण मेरी
matplotlibrc
text.usetex:False
का उपयोग करके किया जा सकता है) मेरी करीबी वोट, सवाल को बहुत गलत पढ़ा। यदि आपके ग्राफ पर कोई बड़ी लॉग टिक्स नहीं है, तो शायद आपको लॉग स्केल का उपयोग नहीं करना चाहिए। – tacaswell@tcaswell यह सच नहीं है: यदि आपके पास कोई ऐसा कार्य है जो पावर लॉ (संभवतः कुछ छोटी सुविधा के साथ) के करीब है, तो आप छोटी श्रेणियों के साथ लॉग स्केल का भी उपयोग करना चाहते हैं। फिर एक लॉग प्लॉट में प्रमुख टिक 10 की शक्ति में हैं, इसलिए आपके पास एक रेंज [2000, 9 000] हो सकती है और कोई बड़ी टिक –
मैंने सोचा था। मेरे पास हजारों अंक सभी केंद्रित (बहुत कम स्कैटर के साथ) एक मूल्य के आसपास 10 की किसी भी शक्ति के करीब नहीं हो सकते हैं और फिर भी एक्स अक्ष में लॉग स्केल लागू करना चाहते हैं। –