Okay, this is going to go pretty long but the basic summary of what I'm trying to do is to combine (at least the essence / not necessarily a literal combining) a chart that I've created using ggplot2 with a control chart I created using qicharts.
So to begin with, here's the basic structure of the data I'm using for the charts. (Reproducible data at the bottom)
| FileName | Version | Category | Value | TestNum | RepNum | Case |
|----------|---------|-----------|-------|---------|--------|-------|
| File1 | 1.0.1 | Category1 | 100 | 1 | 1 | Case1 |
| File1 | 1.0.1 | Category2 | 200 | 1 | 1 | Case1 |
| File1 | 1.0.1 | Category1 | 101 | 1 | 2 | Case1 |
| File1 | 1.0.1 | Category2 | 199 | 1 | 2 | Case1 |
| File2 | 1.0.1 | Category1 | 50 | 1 | 1 | Case1 |
| File2 | 1.0.1 | Category2 | 75 | 1 | 1 | Case1 |
| File2 | 1.0.1 | Category1 | 53 | 1 | 2 | Case1 |
| File2 | 1.0.1 | Category2 | 80 | 1 | 2 | Case1 |
*In the actual dataset, the TestNum keeps counting up along with the next version and there are multiple "Cases". See reproducable example below
Here's how the ggplot2 chart is created:
versions<-unique(df[order(df$TestNum), ][,2])
df$Version<-factor(df$Version, levels = versions)
g <- ggplot(subset(df, FileName=="File1" & Case=="Case1"), aes(x=Version, y=Value, group=FileName))
g <- g + geom_line(size=.25) + geom_point(size=1.2, colour='red') +
ggtitle(expression(atop("TITLE", atop(italic("SUBTITLE"), "")))) +
facet_grid(Category ~ ., scales="free", space="fixed", labeller=label_value) +
xlab("version") + ylab("Metric Value") +
expand_limits(y=0) +
theme(axis.text.x=element_text(angle=45, vjust=1, hjust=1)) +
theme(axis.title.y=element_text(vjust=1)) +
theme(plot.margin=unit(c(0,0,0,0),"mm"))
g
And here's how the control chart is generated:
subdf <- subset(df, FileName=="File1" & Category=="Category1")
qic(Value,
x = Version,
data = subdf,
chart = 'c',
main = 'File1 - Category1',
ylab = 'Category1',
xlab = 'Version')
What I'd really like to do though is to add the control chart lines to the facets of the original ggplot2 chart. Right now, I'll have to have many times the number of figures to have a control chart for every category when I could bundle them into one figure for each file instead.
DATASET HERE
It's rather large to show everything that needs to be considered
FileName <- c("File1", "File1", "File1", "File1", "File1", "File1", "File1", "File1", "File1", "File2", "File2", "File2", "File2", "File2", "File2", "File2", "File2", "File2", "File1", "File1", "File1", "File1", "File1", "File1", "File1", "File1", "File1", "File2", "File2", "File2", "File2", "File2", "File2", "File2", "File2", "File2", "File1", "File1", "File1", "File1", "File1", "File1", "File1", "File1", "File1", "File2", "File2", "File2", "File2", "File2", "File2", "File2", "File2", "File2", "File1", "File1", "File1", "File1", "File1", "File1", "File1", "File1", "File1", "File2", "File2", "File2", "File2", "File2", "File2", "File2", "File2", "File2", "File1", "File1", "File1", "File1", "File1", "File1", "File1", "File1", "File1", "File2", "File2", "File2", "File2", "File2", "File2", "File2", "File2", "File2", "File1", "File1", "File1", "File1", "File1", "File1", "File1", "File1", "File1", "File2", "File2", "File2", "File2", "File2", "File2", "File2", "File2", "File2")
Version <- c("1.0.1", "1.0.1", "1.0.1", "1.0.1", "1.0.1", "1.0.1", "1.0.1", "1.0.1", "1.0.1", "1.0.1", "1.0.1", "1.0.1", "1.0.1", "1.0.1", "1.0.1", "1.0.1", "1.0.1", "1.0.1", "1.0.2", "1.0.2", "1.0.2", "1.0.2", "1.0.2", "1.0.2", "1.0.2", "1.0.2", "1.0.2", "1.0.2", "1.0.2", "1.0.2", "1.0.2", "1.0.2", "1.0.2", "1.0.2", "1.0.2", "1.0.2", "1.0.3", "1.0.3", "1.0.3", "1.0.3", "1.0.3", "1.0.3", "1.0.3", "1.0.3", "1.0.3", "1.0.3", "1.0.3", "1.0.3", "1.0.3", "1.0.3", "1.0.3", "1.0.3", "1.0.3", "1.0.3", "1.0.1", "1.0.1", "1.0.1", "1.0.1", "1.0.1", "1.0.1", "1.0.1", "1.0.1", "1.0.1", "1.0.1", "1.0.1", "1.0.1", "1.0.1", "1.0.1", "1.0.1", "1.0.1", "1.0.1", "1.0.1", "1.0.2", "1.0.2", "1.0.2", "1.0.2", "1.0.2", "1.0.2", "1.0.2", "1.0.2", "1.0.2", "1.0.2", "1.0.2", "1.0.2", "1.0.2", "1.0.2", "1.0.2", "1.0.2", "1.0.2", "1.0.2", "1.0.3", "1.0.3", "1.0.3", "1.0.3", "1.0.3", "1.0.3", "1.0.3", "1.0.3", "1.0.3", "1.0.3", "1.0.3", "1.0.3", "1.0.3", "1.0.3", "1.0.3", "1.0.3", "1.0.3", "1.0.3")
Category <- c("Category1", "Category1", "Category1", "Category2", "Category2", "Category2", "Category3", "Category3", "Category3", "Category1", "Category1", "Category1", "Category2", "Category2", "Category2", "Category3", "Category3", "Category3", "Category1", "Category1", "Category1", "Category2", "Category2", "Category2", "Category3", "Category3", "Category3", "Category1", "Category1", "Category1", "Category2", "Category2", "Category2", "Category3", "Category3", "Category3", "Category1", "Category1", "Category1", "Category2", "Category2", "Category2", "Category3", "Category3", "Category3", "Category1", "Category1", "Category1", "Category2", "Category2", "Category2", "Category3", "Category3", "Category3","Category1", "Category1", "Category1", "Category2", "Category2", "Category2", "Category3", "Category3", "Category3", "Category1", "Category1", "Category1", "Category2", "Category2", "Category2", "Category3", "Category3", "Category3", "Category1", "Category1", "Category1", "Category2", "Category2", "Category2", "Category3", "Category3", "Category3", "Category1", "Category1", "Category1", "Category2", "Category2", "Category2", "Category3", "Category3", "Category3", "Category1", "Category1", "Category1", "Category2", "Category2", "Category2", "Category3", "Category3", "Category3", "Category1", "Category1", "Category1", "Category2", "Category2", "Category2", "Category3", "Category3", "Category3")
Value <- c(194,194,194,17,17,17,355,355,355,194,194,194,16,16,16,373,373,373,160,160,160,17,17,17,355,355,355,160,160,160,16,16,16,373,373,373,160,160,160,17,17,17,355,355,355,160,160,160,16,16,16,373,373,373,1918,1918,1918,17,17,17,355,355,355,1918,1918,1918,16,16,16,373,373,373,1918,1918,1918,17,17,17,355,355,355,1918,1918,1918,16,16,16,373,373,373,1918,1918,1918,17,17,17,355,355,355,1918,1918,1918,16,16,16,373,373,373)
TestNum <- c(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4)
RepNum <- c(1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3)
Case <- c("Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case1", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2", "Case2")
df <- data.frame(FileName,Version,Category,Value,TestNum,RepNum,Case)
Load this before the chart code and you should be able to reproduce all of these figures. Sorry if it's a bit brutish but I wasn't sure how to accomplish the patterns in a simpler way. (Maybe that's a question for another day.)