Jamie,
As you didn't provide your original tree and associated data, it's not possible to reproduce your example, and so understand why things aren't working for you, but, if random input is created as shown below, all three of your scripts work fine for me. The only problem I noticed was that there was a "+" missing from your "Attempt B" between the xlim_tree() and geom_facet() functions.
For example: "Attempt B"
> library(ape)
> library(ggplot2)
> library(ggtree)
> library(ggstance)
> set.seed(1)
> myTree <- rtree(7)
> set.seed(1)
> myData <- data.frame(id = rep(myTree$tip.label, each = 3), Event = c("A", "B", "C"), Proportion = round(runif(21, min = 0, max = (1/3)), 2))
> ggtree(myTree, branch.length = 'none') + geom_tiplab(size = 3.4) + xlim_tree(8) + geom_facet(panel = "Stacked Bar", data = myData, geom = geom_barh, mapping = aes(x = Proportion, fill = Event), stat = 'identity') + theme_bw()
[See attached image]
Note that I added "+ theme_bw()" at the end of your ggtree() call, as this plots an x-axis on the tree panel, which is useful for determining the best value for xlimtree (and seeing the effect of changing xlimtree).
I can only think of two explanations for your problem:
(i) The value of xlimtree that you are using is too low, and is actually below the height of your tree (so you need to use a higher value).
(ii) Try reinstalling the ggtree package, and make sure that you are using the latest version.
Luke