- Provides an interface between Google Chart Tools and R
- Includes the beauty of Hans Rosling's motion charts (purchase of Gapminder by Google)
- https://github.com/mages/googleVis
install.packages('googleVis')
Who is Hans Rosling?
October 21, 2015
install.packages('googleVis')
Who is Hans Rosling?
9 Ted Talks (through 6/2014… the highest number - next was 6)
library(RJSONIO) dat <- data.frame(x=LETTERS[1:2], y=1:2) cat(toJSON(dat))
## {
## "x": [ "A", "B" ],
## "y": [ 1, 2 ]
## }
M <- gvisMotionChart(data, idvar='id', timevar='date',
options=list(), chartid)
Output of googleVis is a list of list
plot(M)M$html$chart ordata: M$html$chart["jsData"]
Run demo(googleVis) to see examples of all charts and read the vignette for more details.
set.seed(123)
datHist=data.frame(A=rpois(100, 20),
B=rpois(100, 5),
C=rpois(100, 50))
suppressMessages(library(googleVis))
Hist <- gvisHistogram(datHist, options=list(
legend="{ position: 'right', maxLines: 2 }",
colors="['#5C3292', '#1A8763', '#871B47']",
width=850, height=360))
plot(Hist)
#print(Hist,file="hist.html")
df=data.frame(country=c("US", "GB", "BR"),
val1=c(10,13,14),
val2=c(23,12,32))
Line <- gvisLineChart(df,options=list(width=750, height=500))
plot(Line)
Line2 <- gvisLineChart(df, "country", c("val1","val2"),
options=list(
series="[{targetAxisIndex: 0},
{targetAxisIndex:1}]",
vAxes="[{title:'val1'}, {title:'val2'}]",
width=750, height=400
))
plot(Line2)
Dashed <- gvisLineChart(df, xvar="country", yvar=c("val1","val2"),
options=list(
series="[{color:'green', targetAxisIndex: 0,
lineWidth: 1, lineDashStyle: [2, 2, 20, 2, 20, 2]},
{color: 'blue',targetAxisIndex: 1,
lineWidth: 2, lineDashStyle: [4, 1]}]",
vAxes="[{title:'val1'}, {title:'val2'}]", width=750,height=400
))
plot(Dashed)
Bar <- gvisBarChart(df,options=list(width=750, height=400)) plot(Bar)
Column <- gvisColumnChart(df,options=list(width=750, height=400)) plot(Column)
Area <- gvisAreaChart(df,options=list(width=750, height=400)) plot(Area)
SteppedArea <- gvisSteppedAreaChart(df, xvar="country",
yvar=c("val1", "val2"),
options=list(isStacked=TRUE, width=750,height=400))
plot(SteppedArea)
Combo <- gvisComboChart(df, xvar="country",
yvar=c("val1", "val2"),
options=list(seriesType="bars",
series='{1: {type:"line"}}',width=750,height=400))
plot(Combo)
head(women)
## height weight ## 1 58 115 ## 2 59 117 ## 3 60 120 ## 4 61 123 ## 5 62 126 ## 6 63 129
Scatter <- gvisScatterChart(women,
options=list(
legend="none",
pointSize=4,lineWidth=.5,
title="Women", vAxis="{title:'weight (lbs)'}",
hAxis="{title:'height (in)'}",
width=700, height=350))
plot(Scatter)
M <- matrix(nrow=6,ncol=6)
M[col(M)==row(M)] <- 1:6
dat <- data.frame(X=1:6, M)
SC <- gvisScatterChart(dat,
options=list(
title="Customizing points",
legend="right",
pointSize=30,
series="{
0: { pointShape: 'circle' },
1: { pointShape: 'triangle' },
2: { pointShape: 'square' },
3: { pointShape: 'diamond' },
4: { pointShape: 'star' },
5: { pointShape: 'polygon' }
}",
width=750,height=400))
plot(SC)
Line3 <- gvisLineChart(df, xvar="country", yvar=c("val1","val2"),
options=list(
title="Hello World",
titleTextStyle="{color:'red',
fontName:'Courier',
fontSize:16}",
backgroundColor="#D3D3D3",
vAxis="{gridlines:{color:'red', count:3}}",
hAxis="{title:'Country', titleTextStyle:{color:'blue'}}",
series="[{color:'green', targetAxisIndex: 0},
{color: 'orange',targetAxisIndex:1}]",
vAxes="[{title:'val1'}, {title:'val2'}]",
legend="bottom",
curveType="function",
width=750,
height=400
))
plot(Line3)
head(Fruits)
## Fruit Year Location Sales Expenses Profit Date ## 1 Apples 2008 West 98 78 20 2008-12-31 ## 2 Apples 2009 West 111 79 32 2009-12-31 ## 3 Apples 2010 West 89 76 13 2010-12-31 ## 4 Oranges 2008 East 96 81 15 2008-12-31 ## 5 Bananas 2008 East 85 76 9 2008-12-31 ## 6 Oranges 2009 East 93 80 13 2009-12-31
Bubble <- gvisBubbleChart(Fruits, idvar="Fruit",
xvar="Sales", yvar="Expenses",
colorvar="Year", sizevar="Profit",
options=list(
hAxis='{minValue:75, maxValue:125}',width=700,height=400))
plot(Bubble)
M1=gvisMotionChart(Fruits, "Fruit", "Year",
options=list(width=500, height=350))
#print(M1,file="M1.html")
plot(M1)
Candle <- gvisCandlestickChart(OpenClose,
options=list(legend='none', width=700,height=400))
plot(Candle)
Pie <- gvisPieChart(CityPopularity, options=list(width=700,height=400)) plot(Pie)
Gauge <- gvisGauge(CityPopularity,
options=list(min=0, max=800, greenFrom=500,
greenTo=800, yellowFrom=300, yellowTo=500,
redFrom=0, redTo=300, width=400, height=300))
plot(Gauge)
PopTable <- gvisTable(Population,
formats=list(Population="#,###",
'% of World Population'='#.#%'),
options=list(page='enable'))
plot(PopTable)
Org <- gvisOrgChart(Regions,
options=list(width=600, height=250,
size='large', allowCollapse=TRUE))
plot(Org)
Tree <- gvisTreeMap(Regions,
"Region", "Parent",
"Val", "Fac",
options=list(fontSize=16))
plot(Tree)
datSK <- data.frame(From=c(rep("A",3), rep("B", 3)),
To=c(rep(c("X", "Y", "Z"),2)),
Weight=c(5,7,6,2,9,4))
Sankey <- gvisSankey(datSK, from="From", to="To", weight="Weight",
options=list(
sankey="{link: {color: { fill: '#d799ae' } },
node: { color: { fill: '#a61d4c' },
label: { color: '#871b47' } }}"))
plot(Sankey)
Cal <- gvisCalendar(Cairo,
datevar="Date",
numvar="Temp",
options=list(
title="Daily temperature in Cairo",
height=320,
calendar="{yearLabel: { fontName: 'Times-Roman',
fontSize: 32, color: '#1A8763', bold: true},
cellSize: 10,
cellColor: { stroke: 'red', strokeOpacity: 0.2 },
focusedCellColor: {stroke:'red'}}")
)
plot(Cal)
datTL <- data.frame(Position=c(rep("President", 3), rep("Vice", 3)),
Name=c("Washington", "Adams", "Jefferson",
"Adams", "Jefferson", "Burr"),
start=as.Date(x=rep(c("1789-03-29", "1797-02-03",
"1801-02-03"),2)),
end=as.Date(x=rep(c("1797-02-03", "1801-02-03",
"1809-02-03"),2)))
Timeline <- gvisTimeline(data=datTL,
rowlabel="Name",
barlabel="Position",
start="start",
end="end",
options=list(timeline="{groupByRowLabel:false}",
backgroundColor='#ffd',
height=350,
colors="['#cbb69d', '#603913', '#c69c6e']"))
#print(Timeline,file="Timeline.html")
plot(Timeline)
Intensity <- gvisIntensityMap(df,options=list( width=750, height=400)) plot(Intensity)
Geo=gvisGeoChart(Exports, locationvar="Country",
colorvar="Profit",
options=list(projection="kavrayskiy-vii",
width=750, height=400))
plot(Geo)
library(datasets)
states <- data.frame(state.name, state.x77)
GeoStates <- gvisGeoChart(states, "state.name", "Illiteracy",
options=list(region="US", displayMode="regions", resolution="provinces",
width=600, height=400))
plot(GeoStates)
GeoMarker <- gvisGeoChart(Andrew, "LatLong",
sizevar='Speed_kt',
colorvar="Pressure_mb",
options=list(region="US"))
plot(GeoMarker)
AndrewMap <- gvisMap(Andrew, "LatLong" , "Tip",
options=list(showTip=TRUE,
showLine=TRUE,
enableScrollWheel=TRUE,
mapType='terrain',
useMapTypeControl=TRUE))
plot(AndrewMap)
AndrewGeo <- gvisGeoMap(Andrew,
locationvar="LatLong",
numvar="Speed_kt",
hovervar="Category",
options=list(height=350,
region="US",
dataMode="markers"))
plot(AndrewGeo)
G <- gvisGeoChart(Exports, "Country", "Profit",
options=list(width=600, height=400))
T <- gvisTable(Exports,
options=list(width=440, height=400))
GT <- gvisMerge(G,T, horizontal=TRUE)
plot(GT)
|
|
|
Code for this deck can be found at: https://github.com/patilv/googleVis-tutorial