Thanks Nick. I think you can get all the functionality of a donut chart including inserting the category names within the graph, choosing colors and specifying opacity. I am not motivated to do all this, but here is the bare minimum.

Code:
sysuse census, clear gr pie, over(region) scheme(s1color) legend(position(2) col(1)) plabel(_all percent, gap(10)) gr_edit .plotregion1.AddMarker added_markers editor .3084167963486522 .1804861369032551 gr_edit .plotregion1.added_markers_new = 1 gr_edit .plotregion1.added_markers_rec = 1 gr_edit .plotregion1.added_markers[1].style.editstyle marker( symbol(circle) /// linestyle( width( sztype(relative) val(.2) allow_pct(1)) color(white) pattern(solid) /// align(inside)) fillcolor(white) size( sztype(relative) val(66.666) allow_pct(1)) angle(stdarrow) /// symangle(zero) backsymbol(none) backline( width( sztype(relative) val(.2) allow_pct(1)) /// color(black) pattern(solid) align(inside)) backcolor(black) backsize( sztype(relative) val(0) allow_pct(1)) /// backangle(stdarrow) backsymangle(zero)) line( width( sztype(relative) val(.2) allow_pct(1)) color(black) /// pattern(solid) align(inside)) area( linestyle( width( sztype(relative) val(.2) allow_pct(1)) color(ltbluishgray) /// pattern(solid) align(inside)) shadestyle( color(ltbluishgray) intensity(inten100) fill(pattern10))) /// label( textstyle( horizontal(center) vertical(middle) angle(default) size( sztype(relative) val(2.777) /// allow_pct(1)) color(black) position() margin( gleft( sztype(relative) val(0) allow_pct(1)) gright( sztype(relative) /// val(0) allow_pct(1)) gtop( sztype(relative) val(0) allow_pct(1)) gbottom( sztype(relative) val(0) allow_pct(1))) /// linestyle( width( sztype(relative) val(.2) allow_pct(1)) color(black) pattern(solid) align(inside))) position(6) /// textgap( sztype(relative) val(.6944) allow_pct(1)) format(`""') horizontal(default) vertical(default)) /// dots( symbol(circle) linestyle( width( sztype(relative) val(.2) allow_pct(1)) color(black) pattern(solid) /// align(inside)) fillcolor(black) size( sztype(relative) val(.1) allow_pct(1)) angle(horizontal) symangle(zero) /// backsymbol(none) backline( width( sztype(relative) val(.2) allow_pct(1)) color(black) pattern(solid) align(inside)) /// backcolor(black) backsize( sztype(relative) val(1.52778) allow_pct(1)) backangle(horizontal) backsymangle(zero)) /// connect(direct) connect_missings(yes) editcopy
Comment