|||

How to make Theory of Change diagrams with Theorymaker

Basic use

Each line in the text box is one variable in the graph. A variable is any factor in your theory of change - something which could be different. Something you can control, or something you want to happen, or anything in between.



A variable
Another variable!

That isn’t much fun. We want to draw edges between the variables, usually with arrows to show which change contributes to what.

Arrows can be specified in four different ways for convenience. Just paste any of these examples into the text box to try them out and adjust them.

Using spaces to create edges (arrows) between variables.

You can just use spaces before the variables, like this:



me
 child a
  grandchild a
  grandchild b
 child b
  grandchild c
  grandchild d

Spaces are good for when you think about the effects of something.




Supermarkets charge for plastic bags
 Far fewer plastic bags purchased
  Much less plastic waste
 Somewhat more hemp bags purchased
  Somewhat more hemp waste
  Shoppers more conscious of waste

Using dots to create edges (arrows) between variables.

Or you can use dots, which reverses the order.




goal
.result a
..subresult a
..subresult b
.result b
..subresult c
..subresult d

This way you can build up nice tidy hierarchies, but you can also have ragged ones too:




goal
.result a
..subresult a
...sub-sub result x
...sub-sub result y
..subresult b
.result b
..subresult c

Don’t let your planning tools force you to be regimented if you don’t want to be!

Advanced tips and tricks

The last diagram was pretty nice but we’d like to point out that one of these effects is small and negative, another is large and positive.




Supermarkets charge for plastic bags
 Far fewer plastic bags purchased; edgecolor=black
  Pollution?
 Somewhat more hemp bags purchased;  edgecolor=red
  Pollution?

I can even add labels to the edges and make them different widths.

Finally, this diagram needs a different shape. On the web interface, I can just drag the proportion slider to the left to make it shallower. Or I can do the same thing by writing proportion, putting a small number for shallow and wide:




Supermarkets charge for plastic bags
 Far fewer plastic bags purchased; edgewidth=4; edgecolor=black
  Pollution?
 Somewhat more hemp bags purchased; edgewidth=1; edgecolor=red; edgelabel=negative
  Pollution?

proportion=.1

Oh, and if you are lazy you can abbreviate all these things:




Supermarkets charge for plastic bags
 Far fewer plastic bags purchased; ewid=4; ecol=black
  Pollution?
 Somewhat more hemp bags purchased; ewid=1; ecol=red; elab=negative
  Pollution?

pro=.1

So we looked at how to ose dots and spaces and how to change the appearance by adding things like edgewidth=3.

Sometimes it is convenient to combine spaces and dots.




goal
.result a
 goal 2
.result b

Sometimes we want to draw diagrams with loops in them. Theorymaker doesn’t stop you.




Parent gets angry
 Child gets upset
  Parent gets angry

If you find yourself repeating variables a lot and you don’t want to copy and paste, you can use an alias by putting some easy shorter form in front of the full name, separated by a double colon.



Pa
 Child gets upset
  Pa::Parent gets angry

You have to define the alias on the last appearance, othewise this will happen:



Pa::Parent gets angry
 Child gets upset
  Pa

Those two techniques are nice and easy but for more complicated cases you can use to=. You can specify more than one target, separated by spaces.


        
a;to=b d
b;to=c 
c
d

A space is used to separate targets. So what to do if the target of the to” has spaces in its name? Just remove the spaces.


        
b with gaps in name
a;to=bwithgapsinname d
d

Finally, you can use a decimal point notation which is very common in project designs.


        
a
a.1
a.1.x
a.1.y
a.2

If you are using the decimal point notation and want to have meaningful labels, you have to use aliases.


        
x     :: Goal
x.a   :: Result a
x.a.1 :: Result a.1
x.b   :: Result b
x.c   :: Result c

Note that I put some spaces in before and after the colons to make it easier to read. You can leave them out if you want.

Combinations of these specifications can also be used.


a
a.1
c;to=a
.d

One of the neat things about Theorymaker is that it is easy to add edges, arrows, between variables.

If you are specifying more than one target with to=, and you decorate the edges, look what happens:



a;to=b c;edgelabel= my label
b
c

If you don’t want this effect, you can use additional lines:



a;to=b;edgelabel= my label
a;to=c;edgelabel= my other label
b
c

You can also control the arrowheads.



a
 b; edgedirection=both
  c; edgedirection=none

Boxes

Grouping boxes are specified using an initial -. If you want boxes inside boxes, use more dashes.


        
-School
Principal;to=Teacher

--Classes
Teacher;to=Motivation Learning

---Students
Learning
.Motivation

Empty boxes are possible too.


        
-box one
--inner box

Notes

There is also a handy way to add notes (with matching colours) to your items. So if you use ;note_two=some note in a variable, a note some note” labelled two” will appear at the bottom of the item. If you do this in multiple variables, the fill colours match.



-Project school
b::Teachers;note_number=30;note_importance=high
Intervention;to=b

-Comparison school
cb::Teachers;note_number=30
Dummy intervention;to=cb

Valued variables & input variables

One more feature: you can mark variables which are valued or which are inputs quite simply:



goal;valued=yes
.result a
..subresult a
...other contribution a
..subresult b
...input b;input=yes
.result b_val
..subresult c
...input c;input=yes
..subresult d
...input d1;input=yes
...input d2;input=yes

There are also shortcodes for some features which you can add at the end of your variable names or aliases:

  • adding _val means this is a valued variable
  • adding _inp means this is an input variable
  • adding _def means this is a defined variable
  • adding _sce means this box is a scenario
  • adding _mul means this box contains multiple cases
  • adding _dot makes a dotted line


--Group 1_sce
c_inp
 a_val
--Group 2_mul
 b_dot;to=d
d

Up next Causal diagrams and Theory Maker: left-to-right? bottom-up? top-down? There is an interesting discussion going on at LinkedIn about Theory Maker. One commenter asked why Theorymaker presents things left-to-right. This Emerging evaluation questions I am just now completing a team evaluation which involved us all applying a standard set of outline questions. Even without getting into the problem
Latest posts Making notes on PDFs without computer or paper Publications causal-map Causal Map intro Causal Mapping - an earlier guide The walk to school in Sarajevo Glitches Draft blog post for AEA365 Theory Maker! Inventory & analysis of small conservation grants, C&W Africa - Powell & Mesbach! Lots of charts! Answering the “why” question: piecing together multiple pieces of causal information rbind.fill for 1-dimensional tables in r yED graph editor Examples of trivial graph format Using attr labels for ggplot An evaluation puzzle: “Talent show” An evaluation puzzle: “Mobile first” An evaluation puzzle: “Many hands” An evaluation puzzle: Loaves and fishes An evaluation puzzle: “Freak weather” An evaluation puzzle: “Billionaire” Using Dropbox for syncing Shiny app data on Amazon EC2 Progress on the Causal Map app Articles and presentations related to Causal Maps and Theorymaker Better ways to present country-level data on a world map: equal-area cartograms A starter kit for reproducible research with R A reproducible workflow for evaluation reports Welcome to the Wiggle Room Realtime comments on a Theory of Change Responses to open questions shown as tooltips in a chart A panel on visualising Theories of Change for EES 2018?