2015-04-22 3 views
1

Я новичок в Stata, и я буду признателен, если кто-то поможет мне разобраться, как добавить дополнительные ярлыки в мою гистограмму.Как сделать дополнительные ярлыки в barchart в Stata

У меня есть частоты для 5 категорий (скажем, Apple, Orange, Banana, Grape, Lemon) и хотели бы составить гистограмму, сравнивающую проценты этих категорий (масштаб на Y - процент) также хотел бы добавить частотные данные вне бара в качестве метки.

Однако, я хотел бы включить дополнительные данные, связанные с каждой категорией на графике:

У меня есть два индекса (CS и DS), рассчитанные в Excel, значения между 0 и 1, а также между -1 и 0 соответственно , , поэтому для каждой категории у меня есть два индекса CS и DS, и мне нужно показать их внутри каждого бара для каждой категории.

Итак:

var1 (categories): Apple, Orange, Banana, Grape, Lemon 
var2 (frequencies): 65, 20, 1, 0, 39 
var3 (CS index): 0.25, 0.12, 0, 0.42, 0.09 
var4 (DS index): -0.15, -0.46, 0, -0.12, -0.2 

Кажется, что мне нужно запустить команду twoway, но это не удалось.

Я использовал этот код, чтобы прибыть примерно то, что я хочу, чтобы сравнить категории, но я не знаю, как добавить другие данные, которые:

graph hbar (sum) var2, over(var1) blabel(bar, format(%9.3g)) asyvars 
percentages showyvars bar(1, color(gs6)) bar(2, color(gs6)) bar(3, 
color(gs6)) bar(4, color(gs6)) bar(5, color(gs6)) bar(6, color(gs6)) 
legend (off) bargap(100) ytitle("Percentage", size(3.5)) 
graphregion(fcolor(white)) plotregion(margin(zero)) 
+0

Я забыл упомянуть, что бар должен быть горизонтальным и процент означает долю от общего объема фруктов. – ashkan

ответ

3

Ключевой момент: Эта проблема сделана простой путем переключения до twoway bar и отображения дополнительного текста с использованием строковых переменных в качестве меток маркеров.

Мы не можем комментировать, что не так с вашим кодом twoway, так как вы его не показываете.

Подробно, ваш пример и ваш дизайн налагают невозможные требования. Один бар должен быть нулевой длины, а другой очень мал, поэтому вы не можете вставлять дополнительный текст внутри них. Но этот сегмент кода показывает какую-то технику:

clear 
set scheme s1color 

input str6 fruit frequency CS DS 
Apple 65 0.25 -0.15 
Orange 20 0.12 -0.46 
Banana 1  0  0 
Grape 0  0.42 -0.12 
Lemon 39 0.09 -0.2 
end 

encode fruit, gen(Fruit) 
su frequency 
gen percent = 100 * frequency/r(sum) 

twoway bar percent Fruit, horizontal barw(0.8) yla(1/5, valuelabel ang(h) noticks) bfcolor(none) 

gen x = 3 
gen text1 = "CS:" + string(CS, "%4.2f") 
gen text2 = "DS:" + string(DS, "%4.2f") 
gen y1 = Fruit + 0.2 
gen y2 = Fruit - 0.2 

twoway bar percent Fruit, horizontal barw(0.8) yla(1/5, valuelabel ang(h) noticks) bfcolor(none) /// 
|| scatter y1 x , ms(none) mlabpos(3) mlab(text1) /// 
|| scatter y2 x , ms(none) mlabpos(3) mlab(text2) legend(off) xtitle(percent) /// 
|| scatter Fruit percent, ms(none) mlabpos(3) mlab(percent) xsc(r(0, 56)) 

Это результирующий график:

enter image description here

+0

спасибо, дорогой Ник, отлично работает. еще один быстрый вопрос: как я уже упоминал выше, я хотел бы иметь частоты в качестве ярлыков на барах (вместо процента), но оси Y и размер бара показывают проценты. на самом деле я хочу заменить метку процентного бара меткой полосы частот. – ashkan

+0

На этом графике ось x показывает проценты. Но все, что вам нужно сделать, это изменить, какая переменная отображается как метка маркера. –

+0

Красивый график. –

 Смежные вопросы

  • Нет связанных вопросов^_^