BookmarkSubscribeRSS Feed
andreas_lds
Jade | Level 19

Some experiments with the code provided in the docs of proc sgmap, see https://documentation.sas.com/doc/en/pgmsascdc/9.4_3.5/grmapref/n0j38r5ljpv8ntn1b6e5vxwc1yyl.htm for details. Tried to add a tooltip for the bubbles show the actual population of that city. Unfortunately the population is shown for Reno only. I changed the following lines in the example:

/* changed html to html5 */
ODS HTML5 path=odsout body="&name..html" style=my_map ;

/* added imagemap */
ods graphics / imagefmt=png imagename="&name" imagemap;  


/* Added "tip= (population_city)" in the bubble statement */
proc sgmap 
      mapdata=nevada         /* Map polygon geometry            */
      maprespdata=county_pop /* Map polygon response data       */
      plotdata=city_pop      /* Bubble response & location data */
   ;
   choromap group / mapid=county id=county name='counties';
   bubble x=long y=lat size=population_city / 
      fillattrs=(color=yellow) 
      name='cities' 
      datalabel=city datalabelattrs= (color=black size=9 style=italic)
      tip= (population_city);
   keylegend 'counties' / title='County Population';
   keylegend 'cities'   / title='City Population';
run;

Mouse pointer disappeared when i took the screenshot, but was in the middle of the yellow Las Vegas bubble:

map_wrong_tooltip.png

Any ideas on how to fix this?

Using SAS 9.4m7 on Windoze.

2 REPLIES 2
GraphGuy
Meteorite | Level 14

Are you getting any messages in your SAS log regarding the tip= ?

 

andreas_lds
Jade | Level 19

Unfortunately not, here is the log:

27         %let name=sgmpnvb2;
28         filename odsout "Ausgabe";
29         
30         ods path(prepend) work.templat(update);
31         proc template;
32            define style my_map;
33            parent=styles.htmlblue;
34            class graphcolors /
35               "gdata1" = cx3182bd
36               "gdata2" = cx6baed6
37               "gdata3" = cx9ecae1
38               "gdata4" = cxc6dbef
39               "gdata5" = cxeff3ff;
40            end;
NOTE: Overwriting existing template/link: My_map
NOTE: STYLE 'My_map' has been saved to: WORK.TEMPLAT
41         run;
NOTE:  Verwendet wurde: PROZEDUR TEMPLATE - (Gesamtverarbeitungszeit):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

42         
43         ODS HTML5 path=odsout body="&name..html" style=my_map ;
NOTE: Writing HTML5 Body file: sgmpnvb2.html
44         
45         ods graphics / imagefmt=png imagename="&name" imagemap;
46         
47         data city_pop (label='Nevada County Seat Populations');
48            length city $65;
49            infile datalines dlm=',';
50            input city population_city county;
51            state='NV';
52            datalines;

NOTE: The data set WORK.CITY_POP has 17 observations and 4 variables.
NOTE:  Verwendet wurde: DATA statement - (Gesamtverarbeitungszeit):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

70         ;
71         run;
72         
73         proc geocode
74            method=city
75            data=city_pop
76            out=city_pop (rename=(x=long y=lat))
77            lookupcity=sashelp.zipcode; /* Use this if you don't have SAS GRAPH */
78         run;

NOTE: Address data set had only 17 observations. Intermediate progress times not output.

    _________ Geocoding Summary _____________________________
    Address data:            WORK.CITY_POP
    Output data:             WORK.CITY_POP
    CITY lookup data:        SASHELP.ZIPCODE
    Geocoding method:        City & state
    Run date:                26Nov2021
    Obs processed:           17
    Elapsed time:            00:00:00
    Obs per minute:          1,020,000
    City matches:            17
    Not matched:             0
    _________________________________________________________

NOTE:  Verwendet wurde: PROZEDUR GEOCODE - (Gesamtverarbeitungszeit):
      real time           0.01 seconds
      cpu time            0.01 seconds
      

79         
80         data county_pop (label='Nevada Counties');
81            length county_name $55;
82            infile datalines dlm=',';
83            input county_name county population_county;
84         
85            statecode = 'NV';
86            /* Add five population ranges as groups to map response data. */
87            if population_county > 100000 then group='Greater than 100,000';
88            else if population_county > 10000 then group='10,000 - 100,000';
89            else if population_county > 5000 then group='5,000 - 10,000';
90            else if population_county > 1000 then group='1,000 - 5,000';
91            else group='Less than 1,000';
92         
93         datalines;

NOTE: The data set WORK.COUNTY_POP has 17 observations and 5 variables.
NOTE:  Verwendet wurde: DATA statement - (Gesamtverarbeitungszeit):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

111        ;
112        run;
113        
114        proc sort data=county_pop;
115           by descending population_county;
116        run;

NOTE: There were 17 observations read from the data set WORK.COUNTY_POP.
NOTE: The data set WORK.COUNTY_POP has 17 observations and 5 variables.
NOTE:  Verwendet wurde: PROZEDUR SORT - (Gesamtverarbeitungszeit):
      real time           0.01 seconds
      cpu time            0.01 seconds
      

117        
118        data nevada;
119           set mapsgfk.us_counties(where=(statecode='NV'));
120        run;

NOTE: There were 3390 observations read from the data set MAPSGFK.US_COUNTIES.
      WHERE statecode='NV';
NOTE: The data set WORK.NEVADA has 3390 observations and 13 variables.
NOTE:  Verwendet wurde: DATA statement - (Gesamtverarbeitungszeit):
      real time           0.07 seconds
      cpu time            0.06 seconds
      

121        
122        title 'Nevada County Seats and Populations';
123        
124        proc sgmap
125              mapdata=nevada         /* Map polygon geometry            */
126              maprespdata=county_pop /* Map polygon response data       */
127              plotdata=city_pop      /* Bubble response & location data */
128           ;
129           choromap group / mapid=county id=county name='counties';
130           bubble x=long y=lat size=population_city /
131              fillattrs=(color=yellow)
132              name='cities'
133              datalabel=city datalabelattrs= (color=black size=9 style=italic)
134              tip= (population_city);
135           keylegend 'counties' / title='County Population';
136           keylegend 'cities'   / title='City Population';
137        run;

NOTE: Choromap boundaries drawn using LAT and LONG from map data set WORK.NEVADA.
NOTE:  Verwendet wurde: PROZEDUR SGMAP - (Gesamtverarbeitungszeit):
      real time           2.84 seconds
      cpu time            0.14 seconds
      
NOTE: There were 17 observations read from the data set WORK.COUNTY_POP.
NOTE: There were 17 observations read from the data set WORK.CITY_POP.

138        
139        ods html5 close;

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

Register Now

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 2 replies
  • 804 views
  • 0 likes
  • 2 in conversation