removing ticks
599 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
If I use
set(gca,'xtick',[])
the ticks vanish as expected, but the exponent, common for all ticks, remains in the plot at the end of the axis.
How can I avoid this
0 Kommentare
Akzeptierte Antwort
Friedrich
am 1 Apr. 2011
Hi Hans,
now I get it. In this special case you have to deactivate the xticklabels, too. This should works fine:
A(1,1:21)= 100000:100020;
B(1:100,1)= 1:100;
C(1:100,1:21)=33;
figure;
pcolor(A,B,C)
set(gca,'xtick',[])
set(gca,'xticklabel',[])
Best regards,
Friedrich
1 Kommentar
Weitere Antworten (12)
Friedrich
am 1 Apr. 2011
Hi Hans,
which MATLAB and Operating System are you using? I ask this because the following code works fine for me in R2010b and Win7 64bit:
>> nn2 = 1.0e-156*[ 1 2];
>> plot(nn2)
>> set(gca,'YTick',[])
Best regards,
Friedrich
0 Kommentare
Friedrich
am 1 Apr. 2011
Hi Hans,
could you please post a working code? Because I am not able to reproduce your problem. Under Win7 64bit and R2009a the following code work fine:
>>n = 6;
>>r = (0:n)'/n;
>>theta = pi*(-n:n)/n;
>>X = r*cos(theta);
>>Y = r*sin(theta);
>>C = r*cos(2*theta);
>> pcolor(X*1e-4,Y*1e-4,C)
>> set(gca,'XTick',[])
So it must be related to your code.
Friedrich
0 Kommentare
Jan
am 1 Apr. 2011
A workaround:
A(1,1:21)= 100000:100020;
B(1:100,1)= 1:100;
C(1:100,1:21)=33;
figure;
ax = axes('XTick', [], 'nextplot', 'add');
pcolor(ax, A,B,C)
set(ax, 'YLim', [min(B), max(B)]);
David
am 19 Aug. 2011
I found this elsewhere.
1 vote Kelly Kearney answered 17 days ago Change the renderer from OpenGL to zbuffer.
set(gcf, 'renderer', 'zbuffer');Why this fixes the problem, I really have no idea. But I encounter it a lot when I add dateticks to my axes. Not sure if it's intended behavior or a bug, but most renderers eliminate the factor when manual tick labels are added; OpenGL does not (or at least doesn't always).
1 Kommentar
Aurelien Queffurust
am 5 Mär. 2014
I confirm this solution allows to removes exponent on my Windows 64-bit
Greg
am 18 Nov. 2015
I realize this is a pretty old thread, but I think I've figured out what might have been causing a lot of the confusion in there after running into this issue myself...
Basically, the "opengl" renderer in older versions of MATLAB seems to have a bug that, when a custom XTickLabel is set, the axis exponent is still displayed. This does bug does not appear to happen with the "zbuffer" or "painters" Renderers.
The size of the "B" matrix matters because when you add a very large graphics object to a plot, MATLAB automatically switches the renderer over to opengl (presumably because of the better performance vs. painters or zbuffer).
So, when you execute this code in R2011b, you get no exponent on the axis:
figure
plot(1e6*(1:10),rand(10))
set(gca,'XTickLabel',{'a','b'})
But then if you flip the renderer to opengl, the exponent will appear:
set(gcf,'Renderer','opengl')
You can get rid of it again by going back to painters or zbuffer:
set(gcf,'Renderer','zbuffer')
set(gcf,'Renderer','painters')
I've tested this in R2011b (where the described issue exists) and in R2015a (where it does not), both on 64-bit Windows.
0 Kommentare
the cyclist
am 1 Apr. 2011
Can you give a simple example of code that exhibits this problem, because I am not seeing that behavior. For example, does this code
figure
plot(10.^(1:10),1:10)
set(gca,'XTick',[])
leave the exponent remaining? It does not for me.
0 Kommentare
hans
am 1 Apr. 2011
4 Kommentare
Jan
am 1 Apr. 2011
The exponent string looks different for these two methods: For the bigger matrix, the exponent is set above the base number, while for the smaller the exponent is set to the right top. It seems like the strings are created by different methods depending on the number of YTicks! And only one method has the bug.
Siehe auch
Kategorien
Mehr zu Graphics Performance finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!