I have a keylegend in an SGPLOT and I need to left justify the title that appears in the legend. Is there a way to do that? I can't find anything in the documentation.
Sorry, I got lazy and hoped there would be a simple, "Oh yeah!" solution. Here's the code below and the graph is attached. I want to spread the KEYLEGEND title out where the "Customer Loyalty" piece of the legend title is spread out across the first 4 variables listed in the legend and have the "Dealer Performance" piece of the legend title spread out over the remaining 5 variables listed in the legend.
In other words:
"Customer Loyalty" spreads across OSAT, Dealer Preference, Likely to Recommend, and More Likely to Purchase
"Dealer Performance" spreads across WADO, TTIA, COMM, TTSE, and RSAT
ods graphics on / height=800 width=1600 maxlegendarea=40;
TITLE1 h=5.0 BOLD f="Thorndale AMT" "&SEL_MGMT_GRP. - Customer Loyalty Along With Dealer Performance";
title2 h=2.0 bold c=brown "&SEL_MGMT_GRP. vs. National and Region";
proc sgplot data=ALL_AVERAGES_XPOSED;
vbarparm category=level response=value / group=entity groupdisplay=cluster dataskin=pressed
seglabel seglabelattrs=(weight=bold color=white size=7) name="VBAR1";
yaxis values=(0 to 1 by .1);
keylegend "VBAR1" /
title="Customer Loyalty Dealer Performance";
where level in("National" "Regional" "Management_Group");
There are two ways I would see going about this.
The first is a really mind numbingly inefficient way and that is to add spaces in your title between the two statements until they are spaced out enough that you are satisfied.
The second way would be efficient but requires knowledge of the Graph Template Language. I don't have the data to test to make sure this runs OK, but here is what I'd do. It essentially splits your legend into two and allows you to have two separate titles in the two pieces by using the EXCLUDE option. This option also exists in KEYLEGEND but I don't know if there's a way to place to legends side-by-side with just SGPLOT as I'm afraid they would overlay on top of each other.
Here's a reference to the GTL syntax: http://support.sas.com/documentation/cdl//en/grstatgraph/69718/HTML/default/viewer.htm#n07s2oezv7f65...
ods path WORK.TEMPLAT(UPDATE) SASHELP.TMPLMST (READ); proc template; define statgraph barcharts; begingraph / designwidth=1600 designheight=800; layout lattice / rows=1 columns=1; /**This is added to give us access to the SIDEBAR block**/ sidebar / align=bottom; /**Sidebar is the space at the bottom of the image (below the actual graph)**/ layout gridded / rows=1 columns=2 border=true; /**This allows us to create two spaces within the sidebar**/ /**Makes a legend on the same graph, but excludes the values you don't want under that specific title**/ discretelegend "VBAR1" / title="Customer Loyalty" across=4 border=false exclude=('WADO' 'TTIA' 'COMM' 'TTSE' 'RSAT'); discretelegend "VBAR1" / title="Dealer Performance" across=4 border=false exclude=('OSAT' 'Dealer Preference' 'Likely to Recommend' 'More Likely to Purchase'); endlayout; endsidebar; layout overlay / /*Sets up the axes*/ xaxisopts=(display=(line ticks tickvalues)) yaxisopts=(type=linear linearopts=(viewmin=0 viewmax=1 tickvaluesequence=(start=0 end=1 increment=0.1))); /**Barchart syntax is slightly different in GTL**/ barchartparm category=level response=value / group=entity orient=vertical groupdisplay=cluster dataskin=pressed segmentlabeltype=auto segmentlabelattrs=(weight=bold color=white size=7) name="VBAR1"; endlayout; endlayout; endgraph; end; run; ods graphics on / height=800 width=1600 maxlegendarea=40; proc sgrender data=ALL_AVERAGES_XPOSED template=barcharts; where level in("National" "Regional" "Management_Group"); run;
Registration is open! SAS is returning to Vegas for an AI and analytics experience like no other! Whether you're an executive, manager, end user or SAS partner, SAS Innovate is designed for everyone on your team. Register for just $495 by 12/31/2023.
If you are interested in speaking, there is still time to submit a session idea. More details are posted on the website.
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.