Discussion:
log log scale scatterplot
(too old to reply)
sid
2017-12-05 18:21:22 UTC
Permalink
Hello all,
I need to plot in log log scale and it is a scatter plot and I need to get the slope and intercept after fitting with linfit. This needs to be plotted in logarithmic space. And also the correlation coefficient needs to be calculated in log-log space.

I have 10 x values and 10 y values
is this correct plot, alog10(x), alog10(y)
or like this plot, x,y,/xlog,/ylog but I need the values in order to find the linfit.

how to do this
thanks
Ben Castellani
2017-12-05 21:34:38 UTC
Permalink
Post by sid
Hello all,
I need to plot in log log scale and it is a scatter plot and I need to get the slope and intercept after fitting with linfit. This needs to be plotted in logarithmic space. And also the correlation coefficient needs to be calculated in log-log space.
I have 10 x values and 10 y values
is this correct plot, alog10(x), alog10(y)
or like this plot, x,y,/xlog,/ylog but I need the values in order to find the linfit.
how to do this
thanks
Here is a sample code that does what you need it to do:

;example data (5 points)
x = [1487,500,24,3455,2233]
y = [11,50,2400,32.3,111]

fit = linfit(alog(x),alog(y))
xfit=[0:max(alog(x)):max(alog(x))/100.]
yfit = xfit*fit[1]+fit[0]

p = plot(alog(x),alog(y),layout=[2,1,1],symbol='o',linestyle=6,color='blue')
p2 = plot(xfit,yfit,/overplot)

NOTE: You can use either of your plot techniques. This will just change the actual labels on the axes. One will be just the log powers (it will show 3 for 1000), the other will be the data values in log form (it will show 10^3 for 1000)
Ben Castellani
2017-12-05 21:49:46 UTC
Permalink
Post by sid
Hello all,
I need to plot in log log scale and it is a scatter plot and I need to get the slope and intercept after fitting with linfit. This needs to be plotted in logarithmic space. And also the correlation coefficient needs to be calculated in log-log space.
I have 10 x values and 10 y values
is this correct plot, alog10(x), alog10(y)
or like this plot, x,y,/xlog,/ylog but I need the values in order to find the linfit.
how to do this
thanks
x = [1487.,500,24,3455,2233]
y = [11,50,2400,32.3,111]

fit = linfit(alog(x),alog(y))
xfit=[min(alog(x)),max(alog(x))]
yfit = xfit*fit[1]+fit[0]


p = plot(alog(x),alog(y),symbol='o',linestyle=6,color='blue',sym_filled=1)
p2 = plot(xfit,yfit,/overplot)
t = text(0.5,0.8,/normal,'Y = ' + strtrim(string(fit[1]),2) + ' X + ' + strtrim(string(fit[0]),2),color='red')
sid
2017-12-07 06:42:38 UTC
Permalink
Post by Ben Castellani
Post by sid
Hello all,
I need to plot in log log scale and it is a scatter plot and I need to get the slope and intercept after fitting with linfit. This needs to be plotted in logarithmic space. And also the correlation coefficient needs to be calculated in log-log space.
I have 10 x values and 10 y values
is this correct plot, alog10(x), alog10(y)
or like this plot, x,y,/xlog,/ylog but I need the values in order to find the linfit.
how to do this
thanks
x = [1487.,500,24,3455,2233]
y = [11,50,2400,32.3,111]
fit = linfit(alog(x),alog(y))
xfit=[min(alog(x)),max(alog(x))]
yfit = xfit*fit[1]+fit[0]
p = plot(alog(x),alog(y),symbol='o',linestyle=6,color='blue',sym_filled=1)
p2 = plot(xfit,yfit,/overplot)
t = text(0.5,0.8,/normal,'Y = ' + strtrim(string(fit[1]),2) + ' X + ' + strtrim(string(fit[0]),2),color='red')
Thanks a lot for the code.

Loading...