<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Customizing VBARPARM bars, data labels, and axis text with a discrete attribute map in Graphics Programming</title>
    <link>https://communities.sas.com/t5/Graphics-Programming/Customizing-VBARPARM-bars-data-labels-and-axis-text-with-a/m-p/987031#M25900</link>
    <description>&lt;DIV&gt;/*&lt;/DIV&gt;&lt;DIV&gt;Dear all,&lt;/DIV&gt;&lt;DIV&gt;I am trying to create a VBARPARM graph in which I can customize several of its elements,&lt;/DIV&gt;&lt;DIV&gt;as you can see in the syntax below. This is a graph that needs to be updated every year.&lt;/DIV&gt;&lt;DIV&gt;Therefore, the objective is to create a program that allows me to build this graph while&lt;/DIV&gt;&lt;DIV&gt;reducing the need for manual code manipulation as much as possible.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;The customizations I want to apply (and so far, I have not been able to find a solution)&lt;/DIV&gt;&lt;DIV&gt;are the following:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;- Set the bar corresponding to region = "World" to the color orange, and set the bars&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; of all other regions to the color green.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;- Display the revenue values by region inside all bars, with the text oriented vertically.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;- Display the revenue values in black for all regions, except for region = "World",&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; whose revenue value should be displayed in blue.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;- Display the region name "World" below the corresponding bar in bold. In other words,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; I want to automatically draw the reader's attention to WORLD by showing the label in&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; bold. Ideally, this should be done without using SGANNO, because the reference region&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; may change its relative value from one year to another and therefore may change its&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; position in the graph.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Would anyone be able to suggest how to address this issues?&lt;/DIV&gt;&lt;DIV&gt;Up to now, the progress I have made is reflected in the syntax below.&lt;/DIV&gt;&lt;DIV&gt;As shown, there are still some problems that I have not been able&lt;/DIV&gt;&lt;DIV&gt;to identify the source of.&lt;/DIV&gt;&lt;DIV&gt;*/&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/*&lt;/DIV&gt;&lt;DIV&gt;An example of the graph that I am trying to reproduce is in the word file attached.&lt;/DIV&gt;&lt;DIV&gt;*/&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;/* Input data&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*/&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;data have;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; input region_code region $ 3-16 income year;&lt;/DIV&gt;&lt;DIV&gt;datalines;&lt;/DIV&gt;&lt;DIV&gt;0&amp;nbsp; North America 50432 2024&lt;/DIV&gt;&lt;DIV&gt;1&amp;nbsp; South America 43713 2024&lt;/DIV&gt;&lt;DIV&gt;2&amp;nbsp; Asia&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 56297 2024&lt;/DIV&gt;&lt;DIV&gt;3&amp;nbsp; Europe&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 49000 2024&lt;/DIV&gt;&lt;DIV&gt;4&amp;nbsp; Africa&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 48383 2024&lt;/DIV&gt;&lt;DIV&gt;5&amp;nbsp; Oceania&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;38765 2024&lt;/DIV&gt;&lt;DIV&gt;99 World&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;47765 2024&lt;/DIV&gt;&lt;DIV&gt;;&lt;/DIV&gt;&lt;DIV&gt;run;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;/* Sort regions according to the order of interest&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; */&lt;/DIV&gt;&lt;DIV&gt;/* (here: descending income)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; */&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;proc sort data=have out=ord;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; by descending income;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;run;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;/* Create an index variable to preserve the sorted order&amp;nbsp; &amp;nbsp; &amp;nbsp; */&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;data ord;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; set ord;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; index = _N_;&amp;nbsp; &amp;nbsp;/* Create an index variable reflecting the ranking */&lt;/DIV&gt;&lt;DIV&gt;run;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;/* Format region labels to control line breaks on the graph&amp;nbsp; &amp;nbsp;*/&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;proc format;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; value $region_fmt&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 'North America' = 'North#America'&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 'South America' = 'South#America'&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 'Asia'&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = 'Asia'&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 'Europe'&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = 'Europe'&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 'Africa'&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = 'Africa'&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 'Oceania'&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= 'Oceania'&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 'World'&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= 'World';&lt;/DIV&gt;&lt;DIV&gt;run;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;/* Macro to place regions in the desired order on the graph&amp;nbsp; &amp;nbsp;*/&lt;/DIV&gt;&lt;DIV&gt;/* based on the previously created index variable&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*/&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;%macro ordre;&lt;/DIV&gt;&lt;DIV&gt;%do ordre_index = 1 %to 7;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; if index = &amp;amp;ordre_index. then do;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; region_&amp;amp;ordre_index. = region;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; format region_&amp;amp;ordre_index. $region_fmt.;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; end;&lt;/DIV&gt;&lt;DIV&gt;%end;&lt;/DIV&gt;&lt;DIV&gt;%mend;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;/* Build the final graph dataset&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*/&lt;/DIV&gt;&lt;DIV&gt;/* - Applies the region ordering&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*/&lt;/DIV&gt;&lt;DIV&gt;/* - Identifies the position of "World" to allow special&amp;nbsp; &amp;nbsp; &amp;nbsp; */&lt;/DIV&gt;&lt;DIV&gt;/*&amp;nbsp; &amp;nbsp;formatting later (bold/highlight)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*/&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;data graph;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; set ord;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; %ordre&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; /* Store the ranking position of World in a macro variable */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; if region_code = 99 then call symputx("num_bold", index);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; /* Helper variable for text annotation positioning */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; yposition = 0;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; /* Format income values */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; format income NLNUM8.;&lt;/DIV&gt;&lt;DIV&gt;run;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;%put &amp;amp;=num_bold;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;/* Discrete attribute map definition&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*/&lt;/DIV&gt;&lt;DIV&gt;/* - Controls bar colors and text attributes by region_code&amp;nbsp; &amp;nbsp; */&lt;/DIV&gt;&lt;DIV&gt;/* - World (code 99) receives special formatting&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*/&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;data my_dattrmap;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; length&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; id&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $10&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; value&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$10&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fillcolor&amp;nbsp; &amp;nbsp;$10&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; filltransparency $10&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; textfamily&amp;nbsp; $40&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; textsize&amp;nbsp; &amp;nbsp; $10&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; textcolor&amp;nbsp; &amp;nbsp;$10&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; textstyle&amp;nbsp; &amp;nbsp;$10&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; textweight&amp;nbsp; $10;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; /* Default attributes for all regions (codes 1 to 7) */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; do i = 1 to 7;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; id&amp;nbsp; &amp;nbsp; = "code_text";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; value = strip(put(i, best.));&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fillcolor&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = "green";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; filltransparency&amp;nbsp; &amp;nbsp;= 0;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; textfamily = "Arial Symbol";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; textsize&amp;nbsp; &amp;nbsp;= 10;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; textcolor&amp;nbsp; = "black";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; textstyle&amp;nbsp; = "Normal";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; textweight = "Normal";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; output;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; end;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; /* Special attributes for World (code 99) */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; id&amp;nbsp; &amp;nbsp; = "code_text";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; value = "99";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; fillcolor&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = "orange";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; filltransparency = 0;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; textfamily = "Arial Symbol";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; textsize&amp;nbsp; &amp;nbsp;= 10;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; textcolor&amp;nbsp; = "blue";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; textstyle&amp;nbsp; = "Normal";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; textweight = "Bold";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; output;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; drop i;&lt;/DIV&gt;&lt;DIV&gt;run;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;/* Macro to generate one VBARPARM statement per ordered region */&lt;/DIV&gt;&lt;DIV&gt;/* - GROUP=region_code activates the discrete attribute map&amp;nbsp; &amp;nbsp; */&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;%macro vbarparm_region;&lt;/DIV&gt;&lt;DIV&gt;%do num = 1 %to 7;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; vbarparm&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; category = region_&amp;amp;num.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; response = income&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;/&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; group&amp;nbsp; &amp;nbsp; = region_code&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; attrid&amp;nbsp; &amp;nbsp;= code_text&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; barwidth = 0.8&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; baselineattrs = (thickness = 0pt)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dataskin = none&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; nooutline;&lt;/DIV&gt;&lt;DIV&gt;%end;&lt;/DIV&gt;&lt;DIV&gt;%mend;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;/* SG annotation: draw a dollar symbol next to the axis&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; */&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;data sganno_graph;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; length function $12 label $1;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; retain drawspace "graphpercent";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; function = "text";&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; label&amp;nbsp; &amp;nbsp; = "$";&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; rotate&amp;nbsp; &amp;nbsp;= 0;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* Keep text horizontal */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; x1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= 3;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* Horizontal position in percent of graph */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; y1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= 90;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* Vertical position in percent of graph */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; textfamily = "Arial Symbol";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; textstyle&amp;nbsp; = "Normal";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; textweight = "Normal";&amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; textcolor&amp;nbsp; = "black";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; textsize&amp;nbsp; &amp;nbsp;= 10;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; output;&lt;/DIV&gt;&lt;DIV&gt;run;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;BR /&gt;&lt;P&gt; &lt;/P&gt;&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;/* Enable full attribute control&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*/&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;ods graphics / attrpriority=none;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* Clear existing titles and footnotes */&lt;/DIV&gt;&lt;DIV&gt;title;&lt;/DIV&gt;&lt;DIV&gt;footnote;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;/* Create the bar chart&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*/&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;proc sgplot data=graph&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; dattrmap = my_dattrmap&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; sganno&amp;nbsp; &amp;nbsp;= sganno_graph&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; noautolegend&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; noborder;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; %vbarparm_region&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; /* X-axis configuration */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; xaxis&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;display=(nolabel)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; tickstyle = inbetween&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fitpolicy = split&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; splitchar = '#';&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; /* Y-axis configuration */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; yaxis&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; values = (30000 to 60000 by 2000)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; display = (nolabel noline)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; valueattrs = (family = 'Arial Symbol')&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; valueshint&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; valuesformat = $region_axis_fmt.;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; /* Display income values as vertical text above bars */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; text x=region y=yposition text=income /&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; attrid&amp;nbsp; &amp;nbsp; = code_text&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; position&amp;nbsp; = top&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; backlight = 0&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rotate&amp;nbsp; &amp;nbsp; = 90;&lt;/DIV&gt;&lt;DIV&gt;run;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;</description>
    <pubDate>Thu, 30 Apr 2026 19:41:05 GMT</pubDate>
    <dc:creator>MFraga</dc:creator>
    <dc:date>2026-04-30T19:41:05Z</dc:date>
    <item>
      <title>Customizing VBARPARM bars, data labels, and axis text with a discrete attribute map</title>
      <link>https://communities.sas.com/t5/Graphics-Programming/Customizing-VBARPARM-bars-data-labels-and-axis-text-with-a/m-p/987031#M25900</link>
      <description>&lt;DIV&gt;/*&lt;/DIV&gt;&lt;DIV&gt;Dear all,&lt;/DIV&gt;&lt;DIV&gt;I am trying to create a VBARPARM graph in which I can customize several of its elements,&lt;/DIV&gt;&lt;DIV&gt;as you can see in the syntax below. This is a graph that needs to be updated every year.&lt;/DIV&gt;&lt;DIV&gt;Therefore, the objective is to create a program that allows me to build this graph while&lt;/DIV&gt;&lt;DIV&gt;reducing the need for manual code manipulation as much as possible.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;The customizations I want to apply (and so far, I have not been able to find a solution)&lt;/DIV&gt;&lt;DIV&gt;are the following:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;- Set the bar corresponding to region = "World" to the color orange, and set the bars&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; of all other regions to the color green.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;- Display the revenue values by region inside all bars, with the text oriented vertically.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;- Display the revenue values in black for all regions, except for region = "World",&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; whose revenue value should be displayed in blue.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;- Display the region name "World" below the corresponding bar in bold. In other words,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; I want to automatically draw the reader's attention to WORLD by showing the label in&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; bold. Ideally, this should be done without using SGANNO, because the reference region&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; may change its relative value from one year to another and therefore may change its&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; position in the graph.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Would anyone be able to suggest how to address this issues?&lt;/DIV&gt;&lt;DIV&gt;Up to now, the progress I have made is reflected in the syntax below.&lt;/DIV&gt;&lt;DIV&gt;As shown, there are still some problems that I have not been able&lt;/DIV&gt;&lt;DIV&gt;to identify the source of.&lt;/DIV&gt;&lt;DIV&gt;*/&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/*&lt;/DIV&gt;&lt;DIV&gt;An example of the graph that I am trying to reproduce is in the word file attached.&lt;/DIV&gt;&lt;DIV&gt;*/&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;/* Input data&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*/&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;data have;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; input region_code region $ 3-16 income year;&lt;/DIV&gt;&lt;DIV&gt;datalines;&lt;/DIV&gt;&lt;DIV&gt;0&amp;nbsp; North America 50432 2024&lt;/DIV&gt;&lt;DIV&gt;1&amp;nbsp; South America 43713 2024&lt;/DIV&gt;&lt;DIV&gt;2&amp;nbsp; Asia&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 56297 2024&lt;/DIV&gt;&lt;DIV&gt;3&amp;nbsp; Europe&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 49000 2024&lt;/DIV&gt;&lt;DIV&gt;4&amp;nbsp; Africa&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 48383 2024&lt;/DIV&gt;&lt;DIV&gt;5&amp;nbsp; Oceania&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;38765 2024&lt;/DIV&gt;&lt;DIV&gt;99 World&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;47765 2024&lt;/DIV&gt;&lt;DIV&gt;;&lt;/DIV&gt;&lt;DIV&gt;run;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;/* Sort regions according to the order of interest&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; */&lt;/DIV&gt;&lt;DIV&gt;/* (here: descending income)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; */&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;proc sort data=have out=ord;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; by descending income;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;run;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;/* Create an index variable to preserve the sorted order&amp;nbsp; &amp;nbsp; &amp;nbsp; */&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;data ord;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; set ord;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; index = _N_;&amp;nbsp; &amp;nbsp;/* Create an index variable reflecting the ranking */&lt;/DIV&gt;&lt;DIV&gt;run;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;/* Format region labels to control line breaks on the graph&amp;nbsp; &amp;nbsp;*/&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;proc format;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; value $region_fmt&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 'North America' = 'North#America'&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 'South America' = 'South#America'&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 'Asia'&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = 'Asia'&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 'Europe'&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = 'Europe'&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 'Africa'&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = 'Africa'&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 'Oceania'&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= 'Oceania'&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 'World'&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= 'World';&lt;/DIV&gt;&lt;DIV&gt;run;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;/* Macro to place regions in the desired order on the graph&amp;nbsp; &amp;nbsp;*/&lt;/DIV&gt;&lt;DIV&gt;/* based on the previously created index variable&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*/&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;%macro ordre;&lt;/DIV&gt;&lt;DIV&gt;%do ordre_index = 1 %to 7;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; if index = &amp;amp;ordre_index. then do;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; region_&amp;amp;ordre_index. = region;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; format region_&amp;amp;ordre_index. $region_fmt.;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; end;&lt;/DIV&gt;&lt;DIV&gt;%end;&lt;/DIV&gt;&lt;DIV&gt;%mend;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;/* Build the final graph dataset&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*/&lt;/DIV&gt;&lt;DIV&gt;/* - Applies the region ordering&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*/&lt;/DIV&gt;&lt;DIV&gt;/* - Identifies the position of "World" to allow special&amp;nbsp; &amp;nbsp; &amp;nbsp; */&lt;/DIV&gt;&lt;DIV&gt;/*&amp;nbsp; &amp;nbsp;formatting later (bold/highlight)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*/&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;data graph;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; set ord;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; %ordre&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; /* Store the ranking position of World in a macro variable */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; if region_code = 99 then call symputx("num_bold", index);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; /* Helper variable for text annotation positioning */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; yposition = 0;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; /* Format income values */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; format income NLNUM8.;&lt;/DIV&gt;&lt;DIV&gt;run;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;%put &amp;amp;=num_bold;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;/* Discrete attribute map definition&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*/&lt;/DIV&gt;&lt;DIV&gt;/* - Controls bar colors and text attributes by region_code&amp;nbsp; &amp;nbsp; */&lt;/DIV&gt;&lt;DIV&gt;/* - World (code 99) receives special formatting&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*/&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;data my_dattrmap;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; length&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; id&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $10&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; value&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$10&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fillcolor&amp;nbsp; &amp;nbsp;$10&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; filltransparency $10&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; textfamily&amp;nbsp; $40&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; textsize&amp;nbsp; &amp;nbsp; $10&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; textcolor&amp;nbsp; &amp;nbsp;$10&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; textstyle&amp;nbsp; &amp;nbsp;$10&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; textweight&amp;nbsp; $10;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; /* Default attributes for all regions (codes 1 to 7) */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; do i = 1 to 7;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; id&amp;nbsp; &amp;nbsp; = "code_text";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; value = strip(put(i, best.));&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fillcolor&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = "green";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; filltransparency&amp;nbsp; &amp;nbsp;= 0;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; textfamily = "Arial Symbol";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; textsize&amp;nbsp; &amp;nbsp;= 10;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; textcolor&amp;nbsp; = "black";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; textstyle&amp;nbsp; = "Normal";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; textweight = "Normal";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; output;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; end;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; /* Special attributes for World (code 99) */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; id&amp;nbsp; &amp;nbsp; = "code_text";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; value = "99";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; fillcolor&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = "orange";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; filltransparency = 0;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; textfamily = "Arial Symbol";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; textsize&amp;nbsp; &amp;nbsp;= 10;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; textcolor&amp;nbsp; = "blue";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; textstyle&amp;nbsp; = "Normal";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; textweight = "Bold";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; output;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; drop i;&lt;/DIV&gt;&lt;DIV&gt;run;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;/* Macro to generate one VBARPARM statement per ordered region */&lt;/DIV&gt;&lt;DIV&gt;/* - GROUP=region_code activates the discrete attribute map&amp;nbsp; &amp;nbsp; */&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;%macro vbarparm_region;&lt;/DIV&gt;&lt;DIV&gt;%do num = 1 %to 7;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; vbarparm&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; category = region_&amp;amp;num.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; response = income&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;/&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; group&amp;nbsp; &amp;nbsp; = region_code&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; attrid&amp;nbsp; &amp;nbsp;= code_text&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; barwidth = 0.8&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; baselineattrs = (thickness = 0pt)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dataskin = none&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; nooutline;&lt;/DIV&gt;&lt;DIV&gt;%end;&lt;/DIV&gt;&lt;DIV&gt;%mend;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;/* SG annotation: draw a dollar symbol next to the axis&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; */&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;data sganno_graph;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; length function $12 label $1;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; retain drawspace "graphpercent";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; function = "text";&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; label&amp;nbsp; &amp;nbsp; = "$";&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; rotate&amp;nbsp; &amp;nbsp;= 0;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* Keep text horizontal */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; x1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= 3;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* Horizontal position in percent of graph */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; y1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= 90;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* Vertical position in percent of graph */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; textfamily = "Arial Symbol";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; textstyle&amp;nbsp; = "Normal";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; textweight = "Normal";&amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; textcolor&amp;nbsp; = "black";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; textsize&amp;nbsp; &amp;nbsp;= 10;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; output;&lt;/DIV&gt;&lt;DIV&gt;run;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;BR /&gt;&lt;P&gt; &lt;/P&gt;&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;/* Enable full attribute control&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*/&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;ods graphics / attrpriority=none;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* Clear existing titles and footnotes */&lt;/DIV&gt;&lt;DIV&gt;title;&lt;/DIV&gt;&lt;DIV&gt;footnote;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;/* Create the bar chart&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*/&lt;/DIV&gt;&lt;DIV&gt;/* ========================================================= */&lt;/DIV&gt;&lt;DIV&gt;proc sgplot data=graph&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; dattrmap = my_dattrmap&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; sganno&amp;nbsp; &amp;nbsp;= sganno_graph&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; noautolegend&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; noborder;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; %vbarparm_region&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; /* X-axis configuration */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; xaxis&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;display=(nolabel)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; tickstyle = inbetween&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fitpolicy = split&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; splitchar = '#';&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; /* Y-axis configuration */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; yaxis&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; values = (30000 to 60000 by 2000)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; display = (nolabel noline)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; valueattrs = (family = 'Arial Symbol')&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; valueshint&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; valuesformat = $region_axis_fmt.;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; /* Display income values as vertical text above bars */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; text x=region y=yposition text=income /&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; attrid&amp;nbsp; &amp;nbsp; = code_text&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; position&amp;nbsp; = top&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; backlight = 0&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rotate&amp;nbsp; &amp;nbsp; = 90;&lt;/DIV&gt;&lt;DIV&gt;run;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;</description>
      <pubDate>Thu, 30 Apr 2026 19:41:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Graphics-Programming/Customizing-VBARPARM-bars-data-labels-and-axis-text-with-a/m-p/987031#M25900</guid>
      <dc:creator>MFraga</dc:creator>
      <dc:date>2026-04-30T19:41:05Z</dc:date>
    </item>
    <item>
      <title>Re: Customizing VBARPARM bars, data labels, and axis text with a discrete attribute map</title>
      <link>https://communities.sas.com/t5/Graphics-Programming/Customizing-VBARPARM-bars-data-labels-and-axis-text-with-a/m-p/987035#M25901</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/236673"&gt;@MFraga&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You can use the code below as a starter for your graph. It uses an attribute map to change the color for the bars and the text within the bars. An XAXISTABLE statement is used with an attribute map to change the font weight for the World region.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I hope this helps.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Regards,&lt;BR /&gt;Marcia&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;/* ========================================================= */
/* Input data                                                 */
/* ========================================================= */
data have;
    input region_code region $ 3-16 income year;
	/* create duplicate region variable for axistable attribute map */
	regionlbl=region;
	/* define the location for the bar label */
	label_loc=0;
datalines;
0  North America 50432 2024
1  South America 43713 2024
2  Asia          56297 2024
3  Europe        49000 2024
4  Africa        48383 2024
5  Oceania       38765 2024
99 World         47765 2024
;
run;
 
 
/* ========================================================= */
/* Sort regions according to the order of interest            */
/* (here: descending income)                                  */
/* ========================================================= */
proc sort data=have out=ord;
    by descending income; 
run;
proc format;
    value $region_fmt
        'North America' = 'North#America'
        'South America' = 'South#America'
        'Asia'          = 'Asia'
        'Europe'        = 'Europe'
        'Africa'        = 'Africa'
        'Oceania'       = 'Oceania'
        'World'         = 'World';
run;
/* attribute map for bar chart and text plot */
data attrmap;
  set ord;
  length textcolor $9 fillcolor textweight $6;
  id='code_text';
  value=region;

  if region_code=99 then do;
    fillcolor='orange';
	textcolor='blue';
  end;
  else do;
    fillcolor='green';
	textcolor='black';
  end;
  textfamily = "Arial Symbol";
  textsize   = 10;
  textstyle  = "Normal";
  textweight = "Bold";
run;
/* attribute map for axis table */
data attrmap2;
  id="region";
  length textcolor $9 textweight $6;
  set ord;
  value=region;
  textcolor='black';
  if region_code=99 then textweight="bold";
  else textweight='normal';
run;
data allattr;
  set attrmap attrmap2;
run;
ods graphics / attrpriority=none;
proc sgplot data=ord dattrmap=allattr noautolegend noborder;
vbarparm
        category = region
        response = income
        /
        group    = region
        attrid   = code_text
        barwidth = 0.8
        baselineattrs = (thickness = 0pt)
        dataskin = none
        nooutline;
    /* Display income values as vertical text above bars */
    text x=region y=label_loc text=income / group=region
        attrid    = code_text  
        position  = right 
        textattrs=(size=10)
        rotate    = 90;
	xaxistable regionlbl / textgroup=regionlbl textgroupid=region nolabel valueattrs=(size=10);
		    /* X-axis configuration */
    xaxis discreteorder=data
        display=(nolabel novalues)
        tickstyle = inbetween
        fitpolicy = split
        splitchar = '#';
 
    /* Y-axis configuration */
    yaxis
        values = (30000 to 60000 by 2000)
        display = (nolabel noline)
        valueattrs = (family = 'Arial Symbol')
        valueshint
        valuesformat = $region_axis_fmt.
        offsetmin=0;
 
	run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 30 Apr 2026 21:02:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Graphics-Programming/Customizing-VBARPARM-bars-data-labels-and-axis-text-with-a/m-p/987035#M25901</guid>
      <dc:creator>MarciaS</dc:creator>
      <dc:date>2026-04-30T21:02:53Z</dc:date>
    </item>
    <item>
      <title>Re: Customizing VBARPARM bars, data labels, and axis text with a discrete attribute map</title>
      <link>https://communities.sas.com/t5/Graphics-Programming/Customizing-VBARPARM-bars-data-labels-and-axis-text-with-a/m-p/987164#M25902</link>
      <description>&lt;P&gt;Dear&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/43601"&gt;@MarciaS&lt;/a&gt;&amp;nbsp;,&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;Thank you very much for the suggestion regarding the use of the XAXISTABLE.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Best !&lt;/DIV&gt;</description>
      <pubDate>Mon, 04 May 2026 15:18:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Graphics-Programming/Customizing-VBARPARM-bars-data-labels-and-axis-text-with-a/m-p/987164#M25902</guid>
      <dc:creator>MFraga</dc:creator>
      <dc:date>2026-05-04T15:18:46Z</dc:date>
    </item>
  </channel>
</rss>

