Hey everyone,
I would like a graph with tick marks inside and all around.
So I started to add another X and Y axes with this code:
proc sgplot data = Sample;
xaxis values=('30Jun1930'd to '30Jun2020'd);
yaxis values=(-3 to 18 by 1);
/* 2nd X and Y axes */
x2axis values=('30Jun1930'd to '30Jun2020'd) display=(nolabel novalues);
y2axis values=(-3 to 18 by 1) display=(nolabel novalues);
series y=ln_Wealth_Portfolio x=Date / x2axis y2axis;
series y=ln_Wealth_Index x=Date;
format Date YEAR4.;
keylegend / location=inside position=topleft down=2;
run;
But I did not find how to draw the tick marks inside. I read somewhere: "If you specify a negative number, tick marks are drawn inside the axis" but I don't know how to do it, and I have dates on my X-axis...
Could you help me please?
Rick is correct that SGPLOT does not expose such an option. However, GTL supports TICKSTYLE=Outside | Inside | Across. If necessary, you could export the GTL from the SGPLOT procedure (use tmplout option) and then add this option to the xaxisopts option bundle.
proc template;
define statgraph class;
begingraph;
layout overlay / xaxisopts=(tickstyle=inside);
scatterplot x=height y=weight;
endlayout;
endgraph;
end;
run;
proc sgrender data=sashelp.class template=class;
run;
I've never seen an option for SGPLOT that does what you describe, but you can suppress the ticks with display=(noticks) and you can draw a grid inside the plot area, like this
proc sgplot data=sashelp.class;
scatter x=height y=weight;
xaxis display=(noticks nolabel novalues) grid;
yaxis display=(noticks nolabel novalues) grid;
run;
Rick is correct that SGPLOT does not expose such an option. However, GTL supports TICKSTYLE=Outside | Inside | Across. If necessary, you could export the GTL from the SGPLOT procedure (use tmplout option) and then add this option to the xaxisopts option bundle.
proc template;
define statgraph class;
begingraph;
layout overlay / xaxisopts=(tickstyle=inside);
scatterplot x=height y=weight;
endlayout;
endgraph;
end;
run;
proc sgrender data=sashelp.class template=class;
run;
I will try this solution, thank you
Edit: Tested and approved!
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.