BookmarkSubscribeRSS Feed
☑ This topic is solved. Need further help from the community? Please sign in and ask a new question.
hellohere
Pyrite | Level 9

I am plotting with SGPLOT and like to have words in diff. COLOR(base on value, if <0 then RED; else BLUE) in title.

That way, dif4 should be RED and dif3 BLUE. How to do it?

 

SGPlot398.png

29877      proc sql noprint;
29878      select md3y-md4y_ema_e into: dif_3y from &plotds. having ind=max(ind);
NOTE: The query requires remerging summary statistics back with the original data.
29879      select md4y-md4y_ema_e into: dif_4y from &plotds. having ind=max(ind);
NOTE: The query requires remerging summary statistics back with the original data.
29880      quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds


29881      title "&dt. dif4= &dif_4y. dif3=&dif_3y.";
29882      proc sgplot data=&plotds.;
29883      series x=ind y=fut;
29884      series x=ind y=md3y/y2axis lineattrs=(thickness=2 pattern=solid);
29885      series x=ind y=md3y_ema_e/y2axis lineattrs=(color=red thickness=2 pattern=solid);
29886      series x=ind y=md4y/y2axis  lineattrs=(thickness=2 pattern=solid);
29887      series x=ind y=md4y_ema_e/y2axis  lineattrs=(color=red thickness=1.5 pattern=solid);
29888      run;

29888!         quit;
1 ACCEPTED SOLUTION

Accepted Solutions
Ksharp
Super User

That is easy. How about this one ?

 

%let dt=1018;
%let dif_4y=-0.14;
%let dif_3y=0.35;




%let dif4=%sysfunc(ifc(&dif_4y.<0,red,blue));
%let dif3=%sysfunc(ifc(&dif_3y.<0,red,blue));
title "&dt. " color=&dif4 "dif4= &dif_4y. " color=&dif3 "dif3=&dif_3y.";
 proc sgplot data=sashelp.stocks;
 where stock='IBM';
series x=date y=close;
 run;

Ksharp_0-1666096519681.png

 

View solution in original post

7 REPLIES 7
hellohere
Pyrite | Level 9
If put as label somewhere in PLOT/Chart, not in title, that is OK also!!!
PeterClemmensen
Tourmaline | Level 20

You want the text in the title to have different coloring, based on some condition, right?

hellohere
Pyrite | Level 9

Yes. Or anywhere in Chart. 

Ksharp
Super User

It looks like a moving average. 

@Rick_SAS  wrote a blog about it.

hellohere
Pyrite | Level 9

Yes, it is MA.

 

Need to color-code the gap, either in title line, or label-alike(anywhere else).

Ksharp
Super User

That is easy. How about this one ?

 

%let dt=1018;
%let dif_4y=-0.14;
%let dif_3y=0.35;




%let dif4=%sysfunc(ifc(&dif_4y.<0,red,blue));
%let dif3=%sysfunc(ifc(&dif_3y.<0,red,blue));
title "&dt. " color=&dif4 "dif4= &dif_4y. " color=&dif3 "dif3=&dif_3y.";
 proc sgplot data=sashelp.stocks;
 where stock='IBM';
series x=date y=close;
 run;

Ksharp_0-1666096519681.png

 

hellohere
Pyrite | Level 9
Thanks a huge

SAS Innovate 2025: Call for Content

Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!

Submit your idea!

How to Concatenate Values

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.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 7 replies
  • 741 views
  • 2 likes
  • 3 in conversation