2010-08-27 14 views
13

उदाहरण के लिए 1x10^4 से स्वरूपित टिक्स के लिए टिक लेबल करें। जबकि घातीय भाग संबंधित अक्षों के ऊपर दिखाई देता है। इस दुर्व्यवहार का वर्णन on matlab central पर भी किया गया है, लेकिन समाधान के बिना।आकृति टिकों में घातीय स्वरूपण को दबाएं

आपकी मदद के लिए धन्यवाद।


'जल्दी चाल'

set(gca, 'YTickLabel',get(gca,'YTick')) 
जब bar3 के लिए आवेदन किया, निम्न चित्र पर देखा जा सकता

काम नहीं किया।

bar3 plot failing

+0

धागा आप लिंक को देखते हुए, मैं 'tick2text' (देखें http://www.mathworks.com/matlabcentral/fileexchange/16003 -tick2text-create-easy-to-custom-tick-labels), जो समस्या को पूरी तरह हल करने लगता है। – Jonas

+0

टिक 2text टिक लेबल स्वरूपित करता है, लेकिन धुरी के ऊपर घातीय भाग बनी हुई है, जो वास्तव में अजीब लगती है। उपर्युक्त समाचार पोस्ट एक ही मुद्दे को नोटिस करता है। – zellus

+0

तस्वीर (http://www.mathworks.com/matlabcentral/fx_files/16003/4/tick2textexample.png) जो 'tick2text' के साथ जाती है अन्यथा इंगित करती है। क्या तस्वीर गलत है? – Jonas

उत्तर

1

एक तरह से टिक लेबल पर बेहतर नियंत्रण प्राप्त करने के लिए, और घातीय स्वरूपण से बचने के लिए, फ़ाइल एक्सचेंज से TICK2TEXT उपयोग करने के लिए है।

यहाँ एक उदाहरण है:

y = cool(7); %# define some data 
ah = axes; %# create new axes and remember handle 
bar3(ah,y*1E6,'detached'); %# create a 3D bar plot 
tick2text(ah, 'ztickoffset' ,-1.15,'zformat', '%5.0f', 'axis','z') %# fix the tick labels 
7

संपादित

इस technical solution page के अनुसार

, टिक लेबल स्वरूपण की सिफारिश की जिस तरह से यह (आप संख्या NUM2STR जैसे कार्यों स्वरूपण के किसी भी उपयोग कर सकते हैं, sprintf, MAT2STR, या किसी अन्य ..)

y = cool(7); 
bar(y(:,1)*1e6) 
set(gca, 'YTickMode','manual') 
set(gca, 'YTickLabel',num2str(get(gca,'YTick')')) 

alt text

लेकिन वहाँ जब यह Z- अक्ष की बात आती है एक बग हो रहा है (लेबल सही तरीके से प्रारूपित हैं, लेकिन घातीय गुणक अभी भी किसी कारण से दिखाया जा रहा है!)

y = cool(7); 
bar3(y*1e6, 'detached') 
set(gca, 'ZTickMode','manual') 
set(gca, 'ZTickLabel',num2str(get(gca,'ZTick')')) 

alt text

अंत में, वहाँ एक और समाधान है जहां हम पाठ वस्तुओं के साथ टिक लेबल बदल है (इस technical solution page संदर्भ के रूप में देखें):

y = cool(7); 
bar3(y*1e6, 'detached') 
offset = 0.25; Xl=get(gca,'XLim'); Yl=get(gca,'YLim'); Zt=get(gca,'ZTick'); 
t = text(Xl(ones(size(Zt))),Yl(ones(size(Zt)))-offset,Zt, num2str(Zt')); %#' 
set(t, 'HorizontalAlignment','right', 'VerticalAlignment','Middle') 
set(gca, 'ZTickLabel','') 

alt text

+0

मैं आपके समाधान की सराहना करता हूं! जब मैं समाधान के लिए गुगल रहा था, मैंने आपके द्वारा संदर्भित 'तकनीकी समाधान' को भी मारा, लेकिन इसकी प्रासंगिकता नहीं देखी गई। यह मुद्दा अब मैथवर्क्स समर्थन में दाखिल होने के लिए तैयार है! – zellus

2

एक अन्य चाल जो आप कोशिश कर सकते हैं वह है कि आप इसे साजिश करने से पहले अपने डेटा को स्केल करें, फिर टिक लेबल को स्केल करें ताकि यह प्रदर्शित हो सके कि यह एक अलग पैमाने पर प्लॉट किया गया है। आप प्लॉट LOG10 फ़ंक्शन का उपयोग अपने प्लॉट किए गए मानों के आधार पर स्वचालित स्केल कारक की गणना करने में आपकी सहायता के लिए कर सकते हैं। मान लें कि आप चर में अपने डेटा है x और y, तो आप इस कोशिश कर सकते हैं:

scale = 10^floor(log10(max(y))); %# Compute a scaling factor 
plot(x,y./scale);     %# Plot the scaled data 
yTicks = get(gca,'YTick');  %# Get the current tick values 
set(gca,'YTickLabel',num2str(scale.*yTicks(:),'%.2f')); %# Change the labels 
+0

अच्छा समाधान, लेकिन मैं ग्राफिक्स भाग से निपटने के लिए पसंद कर सकता हूं, न कि डेटा। – zellus

+0

@ ज़ेलस आपको प्रदर्शित डेटा को स्केल करने के लिए 'hgtransform' ऑब्जेक्ट का उपयोग करने में सक्षम होना चाहिए। यही वह समाधान था जिसका हम उपयोग कर रहे थे। प्लॉट डेटा अनमोल है, लेकिन 1/1000 वें इसके वास्तविक मूल्य पर प्रदर्शित होता है। – KitsuneYMG

+0

बहुत बढ़िया। धुरी पर मूल्यों को बदलने के लिए यह काफी गैर-तुच्छ है। –

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