You can create a dummy variable for each possible choice, then graph the mean of each one.

It's best to have your data in a long format, eg for 3 people answering 3 questions:

Code:

```
id question answer
1 1 2
1 2 3
1 3 3
2 1 1
2 2 1
2 3 2
3 1 1
3 2 3
3 3 2
```

(the id variable identifies each individual)

Now create 3 dummy variables representing the 3 answers:

Code:

```
gen a1=answer==1 if !missing(answer)
gen a2=answer==2 if !missing(answer)
gen a3=answer==3 if !missing(answer)
```

Your dataset should now look like this:

Code:

```
id question answer a1 a2 a3
1 1 2 0 1 0
1 2 3 0 0 1
1 3 3 0 0 1
2 1 1 1 0 0
2 2 1 1 0 0
2 3 2 0 1 0
3 1 1 1 0 0
3 2 3 0 0 1
3 3 2 0 1 0
```

The mean of each dummy variable represents the proportion that gave that answer, eg for question 1, the mean of a2 is the proportion that answered 2 for question 1. Therefore the bars you want are the mean of a1, a2 and a3 for each question.

You can graph those means as follows:

Code:

`graph hbar (mean) a1 a2 a3, over(question) stack`

Obviously you may want to change the colours, improve the labels etc. You could also multiply each dummy variable by 100 to get % instead of proportion... But that's the gist of it. Attached is the result of the following commands, using the above data:

Code:

```
label define question 1 "Question 1" 2 "Question 2" 3 "Question 3"
label values question question
graph hbar (mean) a1 a2 a3, over(question) stack ///
legend(col(3) lab(1 "Answer 1") lab(2 "Answer 2") lab(3 "Answer 3"))
```