In part 1 we discussed publishing real time
data, in part 2 I highlighted storing data in a database and publishing them on a
blog. In the last part 3 of this series I will pay attention to retrieving data
from the database and visualizing the query results.
The simplest way to retrieve data from
MYSQL is installing phpMyAdmin, which gives you complete control of the database,
tables and queries. phpMyAdmin makes building a query and exporting it to .csv
very easy. The exported .csv can be used for further analysis with for example
Excel and visualizing with Google.
More interesting is to make a direct
connection to the database from R, making the query, analyze and visualize
directly from R. Finally, I pay attention to publishing these results online
with plot.ly rest API.
For introduction to R: here is a
beginners guide, and here is a free book highlighting the basics, YaRrr! The Pirate’s Guide to R.
library("DBI",
lib.loc="~/R/win-library/3.3")
> library("utils",
lib.loc="C:/Program Files/R/R-3.3.2/library")
> library("stats",
lib.loc="C:/Program Files/R/R-3.3.2/library")
> library("RMySQL",
lib.loc="~/R/win-library/3.3")
> library("plotly",
lib.loc="~/R/win-library/3.3")
> library("foreign",
lib.loc="~/R/win-library/3.3")
> mydb
= dbConnect(MySQL(), user=xxxxx', password='xxxxxxxx', host='192.168.0.51')
> dbSendQuery(mydb,
"USE wordpress")
<MySQLResult:52720008,0,0>
> dbListTables(mydb)
 [1] "temperatures"              "wp_commentmeta"           
 [3] "wp_comments"               "wp_links"                 
 [5] "wp_options"                "wp_postmeta"              
 [7] "wp_posts"                  "wp_supsystic_tbl_columns"
 [9] "wp_supsystic_tbl_diagrams"
"wp_supsystic_tbl_rows"    
[11]
"wp_supsystic_tbl_tables"  
"wp_term_relationships"   
[13]
"wp_term_taxonomy"         
"wp_termmeta"             
[15]
"wp_terms"                 
"wp_usermeta"             
[17]
"wp_users"                 
"wp_wpbi_ch_cols"         
[19]
"wp_wpbi_charts"           
"wp_wpbi_databases"       
[21]
"wp_wpbi_queries"          
"wp_wpbi_tables"          
[23]
"wp_wpbi_tb_cols"          
"wp_wpbi_vars"  
> dbListFields(mydb,
'temperatures')
[1]
"id"          
"temperature" 
"humidity"    
"dateMeasured" "hourMeasured"
[6]
"pressure"    
"timestamp"   
"humidity2"  
> mydata
= fetch(dbSendQuery(mydb, "SELECT id,temperature,
humidity,timestamp,dateMeasured,hourmeasured pressure FROM
temperatures;"))
> str(mydata)
'data.frame':  316 obs. of 
6 variables:
 $ id         
: int  1 2 3 4 5 6 7 8 9 10 ...
 $ temperature : num  35.3 34.9 34.9 34 33.9 ...
 $ humidity   
: chr  "33.2"
"33.5" "31.7" "34.3" ...
 $ timestamp  
: chr  "2016-12-30
15:31:25" "2016-12-30 15:38:59" "2016-12-30 16:00:03"
"2016-12-30 16:10:01" ...
 $ dateMeasured: chr  "2016-12-30" "2016-12-30"
"2016-12-30" "2016-12-30" ...
 $ pressure   
: int  931 938 960 970 1020 1030
1080 1090 1140 1150 ...
> head(mydata)
  id temperature humidity           timestamp dateMeasured pressure
1  1   
35.29855     33.2 2016-12-30
15:31:25   2016-12-30      931
2  2   
34.91549     33.5 2016-12-30
15:38:59   2016-12-30      938
3  3   
34.89808     31.7 2016-12-30
16:00:03   2016-12-30      960
4  4   
34.01005     34.3 2016-12-30
16:10:01   2016-12-30      970
5  5   
33.87075     34.9 2016-12-30
17:00:04   2016-12-30     1020
6  6   
34.06229     35.1 2016-12-30
17:10:02   2016-12-30     1030
> mydata<-transform(mydata,
humidity = as.numeric(humidity))
> str(mydata)
'data.frame':  316 obs. of 
6 variables:
 $ id         
: int  1 2 3 4 5 6 7 8 9 10 ...
 $ temperature : num  35.3 34.9 34.9 34 33.9 ...
 $ humidity   
: num  33.2 33.5 31.7 34.3 34.9
35.1 37.4 37 36.3 36.8 ...
 $ timestamp  
: chr  "2016-12-30
15:31:25" "2016-12-30 15:38:59" "2016-12-30 16:00:03"
"2016-12-30 16:10:01" ...
 $ dateMeasured: chr  "2016-12-30" "2016-12-30"
"2016-12-30" "2016-12-30" ...
 $ pressure   
: int  931 938 960 970 1020 1030
1080 1090 1140 1150 ...
> summary(mydata)
temperature       humidity              
 Min.   :24.96   Min.   :24.50           
 1st Qu.:27.93   1st Qu.:33.48   
 Median :30.45   Median :36.55   
 Mean   :30.26   Mean   :36.66                     
 3rd Qu.:31.91   3rd Qu.:39.50                     
 Max.   :37.30   Max.   :50.00   
                  
pressure     
Min.   :   0.0  
1st Qu.: 310.0  
Median : 660.0  
Mean   : 688.3  
3rd Qu.:1080.0  
Max.   :1390.0  
p <- ggplot(mydata, aes(x=timestamp, y=temperature, group=1))
p<- p + geom_line()
p
 
 
Call:density.default(x = mydata$temperature)Data: mydata$temperature (316 obs.); Bandwidth 'bw' = 0.7483x yMin. :22.71 Min. :0.00001971st Qu.:26.92 1st Qu.:0.0065082Median :31.13 Median :0.0559650Mean :31.13 Mean :0.05934103rd Qu.:35.34 3rd Qu.:0.1047790Max. :39.55 Max. :0.1464876dt<-density(mydata$temperature)plot(dt)
write.csv(mydata, file = "mydata.csv")
Now we have the dataset in .csv.
Login to plotly and create a line graph
 
And finally, the embed code
<iframe width="900"
height="800" frameborder="0" scrolling="no"
src="https://plot.ly/~peterverweij/20.embed"></iframe>


 
Geen opmerkingen:
Een reactie posten
Opmerking: Alleen leden van deze blog kunnen een reactie posten.