par(mfrow=c(1,2))
plot( thickness, torsion_disp, xlab= "Steel Plate Thickness (mm)", ylab="Torsion Stiffness Scenario Displacement (mm)")
lines(lowess(thickness, torsion_disp), col = "red" )
plot( thickness, mass, xlab= "Steel Plate Thickness (mm)", ylab="BIW Mass (Kg)")
lines(lowess(thickness, mass), col = "red" )
pdf("my_plot.pdf", width=6, height=4)
plot(1:10)
dev.off()
Organizing the plotting commands in a function
fig.myplot <- function() {
plot(1:10)
points(runif(100, 1, 10), runif(100, 1, 10), col=rainbow(100))
abline(h=5)
title(main="My lovely plot")
}
pdf("my_plot.pdf", width=6, height=4)
fig.myplot()
dev.off()
filename <- paste( "D:\\scatter", ".jpg" )
jpeg( filename );
plot( mass, disp, xlab= "Mass (Kg)", ylab="Displacement (mm)")
lines(lowess(mass, disp), col = "blue" )
abline( lm(disp~mass), col = "red")
An example from [3]
plot(1:10, xlab="", ylab="")
xlab <- expression(paste("Photosynthetic rate (", mu, " mol ", m^-2, s^-1, ")"))
ylab <- "Photosynthetic rate (u mol m^-2 s^-1)"
mtext(xlab, 1, 3)
mtext(ylab, 2, 3)
title(main="Doesn't the x axis label look nice?")
points( x, y,pch=19,col="red");
在R语言环境中绘制直方图可以使用 hist, plot和ggplot2等
hist(x, breaks = "Sturges",
freq = NULL, probability = !freq,
include.lowest = TRUE, right = TRUE,
density = NULL, angle = 45, col = NULL, border = NULL,
main = paste("Histogram of" , xname),
xlim = range(breaks), ylim = NULL,
xlab = xname, ylab,
axes = TRUE, plot = TRUE, labels = FALSE,
nclass = NULL, warn.unused = TRUE, …)
x – 数组, 包含histogram所要展示的数据(a vector of values for which the histogram is desired.)
breaks, 可为以下几种类型:
freq – 逻辑(布尔型)变量.
probability
an alias for !freq, for S compatibility.
include.lowest
logical; if TRUE, an x[i] equal to the breaks value will be included in the first (or last, for right = FALSE) bar. This will be ignored (with a warning) unless breaks is a vector.
right
logical; if TRUE, the histogram cells are right-closed (left open) intervals.
density
the density of shading lines, in lines per inch. The default value of NULL means that no shading lines are drawn. Non-positive values of density also inhibit the drawing of shading lines.
angle
the slope of shading lines, given as an angle in degrees (counter-clockwise).
col
a colour to be used to fill the bars. The default of NULL yields unfilled bars.
border
the color of the border around the bars. The default is to use the standard foreground color.
main, xlab, ylab
these arguments to title have useful defaults here.
xlim, ylim
the range of x and y values with sensible defaults. Note that xlim is not used to define the histogram (breaks), but only for plotting (when plot = TRUE).
axes
logical. If TRUE (default), axes are draw if the plot is drawn.
plot
logical. If TRUE (default), a histogram is plotted, otherwise a list of breaks and counts is returned. In the latter case, a warning is used if (typically graphical) arguments are specified that only apply to the plot = TRUE case.
labels
logical or character string. Additionally draw labels on top of bars, if not FALSE; see plot.histogram.
nclass
numeric (integer). For S(-PLUS) compatibility only, nclass is equivalent to breaks for a scalar or character argument.
warn.unused
logical. If plot = FALSE and warn.unused = TRUE, a warning will be issued when graphical parameters are passed to hist.default().
# 准备数据
data<-rnorm(n=1000, m=24.2, sd=2.2)
# 绘制直方图
hist(data)
# 准备数据
data<-rnorm(n=1000, m=24.2, sd=2.2)
# 绘制直方图
hist(data, breaks=30)
# 准备数据
data<-rnorm(n=1000, m=24.2, sd=2.2)
# 绘制直方图
hist(data, freq=FALSE)
# 准备数据
data<-rnorm(n=1000, m=24.2, sd=2.2)
# 绘制直方图
hist( data, freq = FALSE, ylim = c(0, 0.2))
curve(dnorm(x, mean=mean(data), sd=sd(data)), col = 2, lty = 2, lwd = 2, add = TRUE)
# 准备数据
data<-rnorm(n=1000, m=24.2, sd=2.2)
# 绘制直方图
colors = c("red", "yellow", "green", "violet", "orange", "blue", "pink", "cyan")
hist(data, right=FALSE, col=colors, main="Data Distrubution", xlab="x data")
# 准备数据
data<-rnorm(n=1000, m=24.2, sd=2.2)
# 绘制直方图
colors = c("red", "yellow", "green", "violet", "orange", "blue", "pink", "cyan")
h <-hist(data, right=FALSE, col=colors, main="Data Distrubution", xlab="x data")
text(h$mids,h$counts,labels=h$counts, adj=c(0.5, -0.5))
# 准备数据
data1<-rnorm(n=1000, m=24.2, sd=2.2)
data2<-rnorm(n=1000, m=34.2, sd=2.2)
# 绘制直方图
hist( data1, freq = FALSE, ylim = c(0, 0.20), xlim=c(15, 45), col='skyblue', main="Histogram of Data", xlab="data")
hist( data2, freq = FALSE, ylim = c(0, 0.20), add=T, col='red')
# 准备数据
data1<-rnorm(n=1000, m=24.2, sd=2.2)
data2<-rnorm(n=1000, m=34.2, sd=2.2)
# 绘制直方图
hist( data1, freq = FALSE, ylim = c(0, 0.20), xlim=c(15, 45), border=T, col='skyblue', main="Histogram of Data", xlab="data")
hist( data2, freq = FALSE, ylim = c(0, 0.20), add=T, border=T, col=rgb(0, 1, 0, 0.5))
# 准备数据
data1<-rnorm(n=1000, m=24.2, sd=2.2)
data2<-rnorm(n=1000, m=34.2, sd=2.2)
p1 <- hist(data1, plot=FALSE)
p2 <- hist(data2, plot=FALSE)
# 绘制直方图
plot(0,0,type="n",xlim=c(15,45),ylim=c(0,200),xlab="x",ylab="freq",main="Two histograms")
plot(p1,col="green",density=10,angle=135,add=TRUE)
plot(p2,col="blue",density=10,angle=45,add=TRUE)
# 准备数据
data1<-rnorm(n=1000, m=24.2, sd=2.2)
data2<-rnorm(n=1000, m=34.2, sd=2.2)
## 计算分布密度
densdata1 <- density(data1)
densdata2 <- density(data2)
##
xlim <- range(densdata2$x,densdata1$x)
ylim <- range(0,densdata2$y, densdata1$y)
#pick the colours
data1Col <- rgb(1,0,0,0.2)
data2Col <- rgb(0,0,1,0.2)
##
plot(densdata1, xlim = xlim, ylim = ylim, xlab = 'data',
main = 'Distribution of data2 and data2',
panel.first = grid())
#
polygon(densdata1, density = -1, col = data1Col)
polygon(densdata2, density = -1, col = data2Col)
## 标题
legend('topleft',c('data1','data2'),
fill = c(data1Col, data2Col), bty = 'n',
border = NA)
安装
install.packages("ggplot2")
library(ggplot2)
# 准备数据
data<-rnorm(n=1000, m=24.2, sd=2.2)
# 分布密度曲线
ggplot(data=NULL, aes(x=data)) + geom_density()
library(ggplot2)
# 准备数据
data1 <- data.frame( length = rnorm(n=1000, m=24.2, sd=2.2) )
data2 <- data.frame( length = rnorm(n=1000, m=34.2, sd=2.2) )
data1$veg <- 'A'
data2$veg <- 'B'
vegLengths <- rbind(data1, data2)
ggplot(vegLengths, aes(length, fill = veg)) + geom_density(alpha = 0.2)
functionName <- function( parameter1, parameter2 )
{
# code
return ( results )
}
# Call the function
print( functionName( 1, 2, 3 ) )
As in many other programming languages, you repeat an action for every entry of a vector through a for loop[1].
for(i in values){
... do something ...
}
samples <- c(rep(1:10))
baseList <- c(1,2,3,4,5)
XList = list()
YList = list()
ZList = list()
for ( i in baseList)
{
x = baseList[i]
tmp = sin(x);
XList[i] = tmp
tmp = x*x
YList[i] = tmp
}
seq_along creates a sequence from 1 up to the length of its input[2]:
pp <- c("Peter", "Piper", "picked", "a", "peck", "of", "pickled", "peppers")
for(i in seq_along(pp)) print(pp[i])
for (id in c(1,2,3,4,5)){
print(paste("This is", id))
}
for (id in c(1:5)){
print(paste("This is", id))
}
在node.js 环境中调用 R程序
//-----------------------------------
// Modules
//-----------------------------------
const cp = require('child_process');
//
// Variables
//
var r_script_file_path = './statis.r'
var resultPath = './result.txt';
const R_Path = "D:\\R\\R-3.4.1\\bin\\x64\\R.exe"
//-----------------------------------
// Methods
//-----------------------------------
// Run R jobs
//
function runRcode( thefilename )
{
console.log( Date() )
console.log( ' -- R statisitc analysis -- ' ) ;
var command = R_Path + ' CMD BATCH --vanilla --slave ' + thefilename + ' ' + resultPath ;
cp.execSync( command );
console.log( command ) ;
}
//-----------------------------------
// Main process
//-----------------------------------
try{
runRcode( r_script_file_path );
} catch( exception )
{
console.log( exception );
}
[1] R in Action, http://www.statmethods.net/graphs/
[2] https://www.stat.auckland.ac.nz/~paul/RG2e/
[3] https://nicercode.github.io/guides/plotting/
[4] http://bxhorn.com/r-graphics-plot-parameters/#anatomy-of-a-plot
[5] https://www.rdocumentation.org/packages/graphics/versions/3.4.3/topics/hist
[6] http://www.r-tutor.com/elementary-statistics/quantitative-data/histogram
[7] https://www.r-bloggers.com/basics-of-histograms/
[8] https://stackoverflow.com/questions/3541713/how-to-plot-two-histograms-together-in-r
[9] http://ggplot2.org/
[10] http://www.cookbook-r.com/Graphs/Plotting_distributions_(ggplot2)/
[11] http://www.dummies.com/programming/r/how-to-loop-through-values-in-r/
[12] https://www.safaribooksonline.com/library/view/learning-r/9781449357160/ch04.html