forked from hrbrmstr/metricsgraphics
-
Notifications
You must be signed in to change notification settings - Fork 0
/
README.Rmd
152 lines (116 loc) · 4.36 KB
/
README.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
---
title: "README"
author: "Bob Rudis"
date: January 08, 2015
output:
md_document:
variant: markdown_github
---
metricsgraphics is an 'htmlwidget' interface to the [MetricsGraphics.js](http://metricsgraphicsjs.org/) D3 chart library.
The current `htmlwidget` wrapper for it is minimaly functional and does not provide support
for metricsgraphics histograms and provides nascent support for metricsgraphics'
best feature - time series charts.
Charts look best in a Boostrap page (unless you customize your own CSS).
You can see what the output below produces [on RPubs](http://rpubs.com/hrbrmstr/52782).
The following functions are implemented:
- `mjs_plot`: Create a new metricsgraphics.js plot
- `mjs_line`: metricsgraphics.js linechart "geom"
- `mjs_add_line`: used to add additional columns for a multi-line chart
- `mjs_add_legend`: adds a legend to a line (or mult-line) chart
- `mjs_point`: metricsgraphics.js scatterplot "geom"
- `mjs_bar`: metricsgraphics.js bar chart "geom"
- `mjs_axis_x`: Configure x axis ticks & limits
- `mjs_axis_y`: Configure y axis ticks & limits
- `mjs_labs`: Configure axis labels & plot description
- `mjs_add_baseline`: Sets a baseline line/label
- `mjs_add_marker`: Sets a marker line/label
### News
- Version 0.1 released
- Version 0.2 released - added support for markers & baselines + minimal support for time-series
- Version 0.3 released - coded up more config parameters (including color and point sizes) and added support for multi-line plots
- Version 0.3.1 released - `mjs_marker` will now convert dates properly
- Version 0.4 released - added `mjs_add_legend` to support legends in line/multi-line charts
- Version 0.4.1 released - added support for linked charts (currently only works in `Rmd` files and mebbe Shiny if I can get more than one plot to show up in Shiny). See the [online Rmd demo](http://rpubs.com/hrbrmstr/52765) (scroll to bottom); also added some parameter error checking
### Installation
```{r eval=FALSE}
devtools::install_github("hrbrmstr/metricsgraphics")
```
```{r echo=FALSE, message=FALSE, warning=FALSE, error=FALSE}
options(width=120)
```
### Usage
```{r eval=FALSE}
library(metricsgraphics)
library(RColorBrewer)
tmp <- data.frame(year=seq(1790, 1970, 10), uspop=as.numeric(uspop))
tmp %>%
mjs_plot(x=year, y=uspop) %>%
mjs_line() %>%
mjs_add_marker(1850, "Something Wonderful") %>%
mjs_add_baseline(150, "Something Awful")
tmp %>%
mjs_plot(x=year, y=uspop, width=600) %>%
mjs_line(area=TRUE)
tmp %>%
mjs_plot(x=uspop, y=year, width=500, height=400) %>%
mjs_bar() %>%
mjs_axis_x(xax_format = 'plain')
mtcars %>%
mjs_plot(x=wt, y=mpg, width=600, height=500) %>%
mjs_point(color_accessor=carb, size_accessor=carb) %>%
mjs_labs(x="Weight of Car", y="Miles per Gallon")
mtcars %>%
mjs_plot(x=wt, y=mpg, width=600, height=500) %>%
mjs_point(color_accessor=cyl,
x_rug=TRUE, y_rug=TRUE,
size_accessor=carb,
size_range=c(5, 10),
color_type="category",
color_range=brewer.pal(n=11, name="RdBu")[c(1, 5, 11)]) %>%
mjs_labs(x="Weight of Car", y="Miles per Gallon")
mtcars %>%
mjs_plot(x=wt, y=mpg, width=400, height=300) %>%
mjs_point(least_squares=TRUE) %>%
mjs_labs(x="Weight of Car", y="Miles per Gallon")
set.seed(1492)
dat <- data.frame(date=seq(as.Date("2014-01-01"),
as.Date("2014-01-31"),
by="1 day"),
value=rnorm(n=31, mean=0, sd=2))
dat %>%
mjs_plot(x=date, y=value) %>%
mjs_line() %>%
mjs_axis_x(xax_format = "date")
set.seed(1492)
stocks <- data.frame(
time = as.Date('2009-01-01') + 0:9,
X = rnorm(10, 0, 1),
Y = rnorm(10, 0, 2),
Z = rnorm(10, 0, 4))
stocks %>%
mjs_plot(x=time, y=X) %>%
mjs_line() %>%
mjs_axis_x(show=FALSE) %>%
mjs_axis_y(show=FALSE)
stocks %>%
mjs_plot(x=time, y=X) %>%
mjs_line() %>%
mjs_add_line(Y) %>%
mjs_add_line(Z) %>%
mjs_axis_x(xax_format="date")
library(shiny)
library(metricsgraphics)
ui = shinyUI(fluidPage(
h3("MetricsGraphics Example", style="text-align:center"),
metricsgraphicsOutput('mjs')
))
server = function(input, output) {
output$mjs <- renderMetricsgraphics(
mtcars %>%
mjs_plot(x=wt, y=mpg, width=400, height=300) %>%
mjs_point(color_accessor=carb, size_accessor=carb) %>%
mjs_labs(x="Weight of Car", y="Miles per Gallon")
)
}
shinyApp(ui = ui, server = server)
```