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!
Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!
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.
Ready to level-up your skills? Choose your own adventure.