Asked by JT Yang
on 13 Jul 2019

Hi, I used correlation plot(corrplot) and getting the following graph. And it is obvious the var2 is bounded by -1 from the two scatter plot and as well as from the data. But the second histogram starts from a starting value much smaller value. I'm not sure is it a bug or my setting problem. Actually I did not do any settings, this is the default output from corrplot.

Answer by the cyclist
on 13 Jul 2019

Accepted Answer

I don't have the Econometrics Toolbox, so I can't confirm myself. But if that is really the only thing you did, then I think this is either a bug or a very unconventional choice on the part of Mathworks. I did this same style plot in R (using the psych library), and the output as you expect it -- with labeling of the figures aligned for both the histogram and the scatterplot. I can't think of a reason to not do it that way.

So, if you are sure that you have not adjusted the scatterplot axes after running the above commands, then I would submit a bug report, including your data and code.

Answer by dpb
on 13 Jul 2019

Edited by dpb
on 13 Jul 2019

It's a confusing labeling problem -- the ticks aren't actually the variables on the plot for the histogram but for the scatter plots -- the axes values are for the scatter plot in the upper right quadrant which is scatter(x(:,2),x(:,1)) while the lower left is scatter(x(:,1),x(:,2)).

So, the x-axes limits are for var2 which are bounded at -1; the labels have nothing to do with the histograms; only the scatter plots. TMW just placed the x-axis labels for all the suplots at the bottom instead of keeping them with their respective suplot locations.

If create a poor-man's copy...

subplot(2,2,1)

hist(MCMC(:,1),100)

subplot(2,2,2)

scatter(MCMC(:,2),MCMC(:,1))

ylim([0 0.025])

xlim([-1.105 -0.7])

subplot(2,2,3)

scatter(MCMC(:,1),MCMC(:,2))

xlim([0 0.025])

ylim([-1.105 -0.7])

subplot(2,2,4)

hist(MCMC(:,2),100)

xlim([-1.05 -0.75])

one gets

so, while perhaps confusing, looks like the data are in fact correct...I don't have the Econometrics TB so can't go in and query what the actual limits are on each subplot() but doing so will make things clear, I expect. I fiddled around to roughly approximate the appearance on the LRH one...that took some doing...what the logic is that created the actual limits would be interesting to go look at, perhaps.

dpb
on 14 Jul 2019

Wowsers!!! They went all out...

>> openfig('corrplot.fig')

Warning: Unable to load instances of class matlab.ui.controls.AxesToolbar into a heterogeneous array. The definition of

...

ans =

Figure (2) with properties:

Number: 2

Name: ''

Color: [0.9400 0.9400 0.9400]

Position: [675 549 570 420]

Units: 'pixels'

Show all properties

>> hF=gcf;

>> hA=hF.Children

hA =

7×1 Axes array:

Axes (PlotMatrixHistAx)

Axes (PlotMatrixHistAx)

Axes (PlotMatrixScatterAx)

Axes (PlotMatrixScatterAx)

Axes (PlotMatrixScatterAx)

Axes (PlotMatrixScatterAx)

Axes (CorrPlot)

>> xl=get(hA,'XLim');

>> xl{:}

ans =

0.0032 0.0280

ans =

-1.0300 -0.7700

ans =

0.0051 0.0261

ans =

-1.1193 -0.7334

ans =

0.0051 0.0261

ans =

-1.1193 -0.7334

ans =

0 1

>>

Looks like they created an axes for each quadrant for starters and plotted scatter and then overlaid two additional axes for the two histograms on top...instead of just a simple four-axes subplot() thing.

But, you can see where they left the ranges after done by default...

I confirmed that axes 2 and 6 are the LRH corner by

text(hA(6),-1,-0.8,'SIX')

text(hA(2),-1,7000,'TWO')

hA(6).Color='none';

hA(2).Color='none';

which also reveals they drew a line on the scatter axes that seems to traverse the range of the scatter plot data--I don't understand the purpose for it to then hide it...

Curiouser and curiouser... :)

ADDENDUM:

It appears the line is plot() of the scatter data sorted by increasing x...for what purpose still escapes me--they could have easily found the ranges by simply using min()/max() unless were too lazy and letting the autoranger default the axis limits--but even that could be just the two extrema; why duplicate the whole data set yet again??? But no, that isn't it because the limits aren't even as would otherwise be and

>> hA(6).XLimMode

ans =

'manual'

>>

confirms that.

Bizarre.

JT Yang
on 14 Jul 2019

dpb
on 15 Jul 2019

Sign in to comment.

Opportunities for recent engineering grads.

Apply Today
## 2 Comments

## the cyclist (view profile)

## Direct link to this comment

https://nl.mathworks.com/matlabcentral/answers/471525-wrong-axis-value-in-correlation-plot#comment_724056

## JT Yang (view profile)

## Direct link to this comment

https://nl.mathworks.com/matlabcentral/answers/471525-wrong-axis-value-in-correlation-plot#comment_724059

Sign in to comment.