Changing the Look of Elements of the Graph


In a line chart, you may distinguish different lines by colour or pattern. You may also wish to change the thickness of the line.

Line pattern

The pattern of the line may be changed via option lpattern, such as in

line sales1 sales2 year, lpattern(solid dash)

with the first line being drawn as a solid line and the second as a dashed line. Other pattern styles are dot, dash_dot, shortdash, shortdash_dot, longdash, longdash_dot or blank. The last option is just in case you wish to draw an invisible line for some reason or other. You may also create your own line pattern with the help of a "formula", such as in

line sales1 sales2 year, lpattern("_-." "__#")

You may combine elements _ (underscore = long dash), - (hyphen = medium dash), . (dot = short dash) and # (= small amount of blank space). "l" (small l) will draw a solid line.

Line width

The width, or thickness, of the line may be changed via option lwidth, such as in

line sales1 sales2 year, lwidth(medium)

Apart from some keywords that are available (such as medthin, vthin [for very thin], or thick [which will be too thick in most cases]), you can use numbers, as in lwidth(*1.2), which will multiply the default width by a factor of 1.2, or in lwidth(1.2), with the value in parentheses difficult to interpret in substantial terms (it refers to a percentage of the width or height of the graph, whichever is smaller -- but to translate this into line width is not easy).

Filling colours

Often, you may add an option referring to the colours used to fill bars or boxes.


With histograms, try the fcolor() option. You may refer either to a colour, such as in

histogram age, fcolor(green)

or a degree of whiteness, as in

histogram age, fcolor(gs16)

Find more about filling colours by typing help colorstyle.

Bar charts

graph bar (percent), over(education) bar(1, bfcolor(white) blcolor(black))

will yield white, i.e. blank, bars that are delineated by black lines. That is, bfcolor refers to the "filling" of the bar, whereas blcolor stands for "bar line".

Note, however, that the look of the bar can be modified in other ways as well, and these interact with bfcolor and blcolor. These modifications come from the intens[ity] and lintens[ity] options (for intensity [of color] and line intensity). These options refer to the overall graph, i.e., they are not associated with a specific bar (bar(1, ...) but stand alone. intens(0) will reduce the intensity of the filling colour to zero (i.e., to white), whereas intens(255) will yield the full flavour. intens(*#) will change the intensity compared to the default value. intens(*.5) will yield half the intensity and intens(*2) will double it.

The same holds for lintens[ity], but note that whatever you do with this option, it will be overriden by a blcolor option associated with a bar, as described in the example above.

Finally, the thickness of the line that outlines the bar can be influenced with lwidth(), which is used as a sup-option to the bar() option, just like bfcolor or blcolor. For a description, see the first section (on line charts) of this entry.

Box plots

As far as box plots are concerned, I'm not certain whether (and if so, how) you may change the colour of the box. However, the intensity() option allows you to regulate the amount of colour used for the box. intensity(0) will deliver a white box, with a maximum of 100 for the highest intensity.

Marker symbols

The symbols

Scatter plots, "connected" line plots and probably a number of others will depict data points by symbols such a dots (circles), squares, triangles etc. You may specify the desired symbol by way of adding an option to the respective graph command, as in

twoway connected unempl year, msymbol(O)

So, what is msymbol(O) standing for? Well, perhaps you have guessed that the O (note that this is letter O, not number zero!) represents a circle, and yes, you're right. But there is a bit more to it. So let's get briefly into systematics.

(1) There are six symbols: Circles, diamands, triangles, squares, plusses (i.e., +), and x.

(2) With the exception of the plus sign, for each symbol there is a large and a small version.

(3) The geometrical symbols (i.e., all with the exception of the plus sign and the letter X/x) may be either solid (i.e., filled with colour) or hollow.

Now, in the example above, I used the capital (or "large") letter O, which means that I requested a large circle. So, for a large diamond/triangle/square/X, use capital letters D, T, S, and X, respectively, whereas for the small versions, use small letters. And what about the solid or the hollow version? Well, by default the symbols are solid, and therefore nothing is required to obtain a solid symbol. In contrast, if you prefer a hollow symbol, add letter "h". So, a large hollow circle will be obtained via msymbol(Oh).

For completeness's sake, let me mention that instead of the abbbreviations outlined in the preceding, you may also use the full names. So, instead of msymbol(O) I could have used msymbol(circle) (with a small letter at the start). To obtain a small circle, write msymbol(smcircle), and to make it hollow, add msymbol(smcircle_hollow). Note that, whereas the full names for the large symbols typically start with a small letter, this is not the case for a large X; here the "full name" likewise is a large, i.e., capital, X, whereas the full name for the small x is smx.

Defining the look of the symbol

You can determine the look of the marker symbols in very much detail. Here, I will mention only the basic options:

msize()   the size of the marker symbol (see text below table)
mcolor()   colour of the marker, both inside and out (i.e., the outline)
mlcolor()   colour of the outline
mfcolor()   colour inside the symbol (the "filling" color)
mlwidth()   the thickness of the outline
mlstyle()   the overall style of the outline (run help linestyle)
mstyle()   the overall style of the marker (run help markerstyle)

A note on marker size: This can be indicated, among other things, either in relative (msize(*2) will make it twice as large as by default) or in absolute terms (as in msize(tiny)). For more information, run help markersizestyle.

General marker styles

There are some general marker styles that define several elements of the marker symbols at the same time. They may be used as in

scatter unempl dgp, mstyle (p4)

There are fifteen differents styles, p1 to p15. Note that their look also depends on the overall scheme you may be using. Find out more with help markerstyle.

Adding elements to your graphs

A horizontal line at a given value of y, say, 1.5, may be added with option


Several numbers may be enclosed within the parentheses, producing several lines.

A vertical line at a given value of x, say, 3, not suprisingly is added with option


Again, several values may be enclosed within the parentheses, producing several lines.

© W. Ludwig-Mayerhofer, Stata Guide | Last update: 28 Dec 2018