geofacet, that supports arranging facet panels that mimics geographic topoloty.
After playing with it, I realized that it is not only for visualizing
geo-related data, but also can be fun for presenting data to mimics pixel art.
library(ggtree) tree_text <- "(((((cow, (whale, dolphin)), (pig2, boar)), camel), fish), seedling);" x <- read.tree(text=tree_text) ggtree(x, linetype="dashed", color='firebrick') + xlim(NA, 7) + ylim(NA, 8.5) + geom_tiplab(aes(color=label), parse='emoji', size=14, vjust=0.25) + labs(title="phylomoji", caption="powered by ggtree + emojifont")
Dear ggtree team,
how can I apply a geom_xxx to only one facet panel? For example if i want to get
geom_text()in the dot panel? I cant see the
facet_grid(. ~ var)function call, so I don’t know which subsetting to use. I have already read http://stackoverflow.com/questions/29873155/geom-text-and-facets-not-working
tr <- rtree(30) d1 <- data.frame(id=tr$tip.label, val=rnorm(30, sd=3)) p <- ggtree(tr) p2 <- facet_plot(p, panel="dot", data=d1, geom=geom_point, aes(x=val), color='firebrick') d2 <- data.frame(id=tr$tip.label, value = abs(rnorm(30, mean=100, sd=50))) p3 <- facet_plot(p2, panel='bar', data=d2, geom=geom_segment, aes(x=0, xend=value, y=y, yend=y), size=3, color='steelblue') + theme_tree2()
If this can be done, we can create even more comprehensive tree plots.
I try to plot long tip labels in ggtree and usually adjust them using xlim(), however when creating a facet_plot xlim affects all plots and minimizes them.
Is it possible to work around this and only affect the tree and it’s tip labels leaving the other plots in facet_plot unaffected?
This is indeed a desire feature, as
ggplot2 can’t automatically adjust
xlim for text since the units are in two different spaces (data and pixel).
gheatmapfor visualizing heatmap and
msaplotfor visualizing multiple sequence alignment with phylogenetic tree.
We may have different data types and want to visualize and align them with the tree. For example,
dotplot of SNP site (e.g. using
barplot of trait values (e.g. using
geom_barh(stat='identity')) et al.
To make it easy to associate different types of data with phylogenetic tree, I implemented the
facet_plot function which accepts a
geom function to draw the input
data.frame and display it in an additional
Here, as examples, I used
ggtree to draw capital character
C, which are first letter of my name :-).
To draw a tree in such shape, we need
fan layout (
circular layout with open angle) and then rotating the tree to let the open space on the correct position. Here are the source codes to produce the
C shapes of tree. I am thinking about using the
G shaped tree as
ggtree logo. Have fun with
set.seed(123) d = data.frame(x=rnorm(10), y=rnorm(10)) imgfile <- tempfile(, fileext=".png") download.file("https://avatars1.githubusercontent.com/u/626539?v=3&u=e731426406dd3f45a73d96dd604bc45ae2e7c36f&s=140", destfile=imgfile, mode='wb') p = ggplot(d, aes(x, y)) subview(p, imgfile, x=d$x, y=d$y) + geom_point(size=5)
emojifont is available in CRAN, you can use the following command to install it.
An example of using emoji font in R plot is showed below:
I have played with emoji in
R for a while. My solution of using it is different from what implemented in emoGG.
emoGG is a good attemp to add
ggplot2. It render
emoji picture (png) and creat a layer,
geom_emoji, to add emoji.
In my opinion,
emoji should be treated as ordinary font in user interface, albeit it maynot be true internally.
It would be more flexible if we can use emoji as ordinary font and in this way user don’t need to learn extra stuff.
The function plot of
y=1/(x^2-1) looks very similar of this symbol.
I use ggplot2 to draw the symbol of Jiong.