Bar graphs
If you are working with categorical data, bar graphs can provide an accessible summary of your data. Like many commands in Stata, there are a wealth of options for modifying the resulting visuals; for details on myriad possibilities, see the graph bar help documentation. This example will get you started with bar graphs.
Using the wide-format blood pressure data, I'd like to compare blood pressure for patients before and after (some activity - this is a fictitious dataset).
#load the data
sysuse bpwide
#initial graph: bp_before and bp_after
graph bar bp_before bp_after
These dataset-wide means aren't really useful to me as visuals or as numbers. I'd like to break this down a bit
#graph, grouped by sex
graph bar bp_before bp_after, over(sex)
#graph, grouped by agegrp
graph bar bp_before bp_after, over(agegrp)
#graph, grouped by both sex and agegrp
graph bar bp_before bp_after, over(agegrp) over(sex)
Note that the over() command shows data within the same graph. To generate separate graphs for each grouping, use the by() command.
graph bar bp_before bp_after, by(agegrp)
You can combine by() and over(); in this case, I want to visualize patterns within male/female, grouped by age:
graph bar bp_before bp_after, by(sex) over(agegrp)
The above code should generate a graph something like this:
Further documentation
UCLA Stata page, How do I make a graph with error bars?
For a general introduction to graphics in Stata, see this guide from UCLA.