我需要针对3个因素绘制地上和地下生物量.对于每个生物量,我能够使用来自格子的条形图绘制它,但是,我不知道绘制其中的两个,即正面的地上生物量,以及Y轴的地理部分的地下生物量.这是我的数据的测试代码,其中A,B,C是全因子因子:
library(lattice)
above <- runif(108)
below <- runif(108)
A <- rep(c("ab", "bc", "cd"), each=36)
B <- rep(1:3, 36)
C <- gl(3, 4, 108, c(30, 60, 90))
barchart(above~A|B+C)
barchart(below~A|B+C)
#This is what I used to do for two factors using barplot
par(mfrow=c(2, 1), mai=c(0, 1, 0.5, 0.5))
agg.abv <- aggregate(above, by=list(A, B), mean)
abv <- matrix(agg.abv[, 3], ncol=nlevels(A), dimnames=list(levels(A), levels(B)))
agg.bel <- aggregate(below, by=list(A, B), mean)
bel <- matrix(agg.bel[, 3], ncol=nlevels(A), dimnames=list(levels(A), levels(B)))
barplot(abv, beside=T, ylim=c(0, 1))
barplot(abv, beside=T, ylim=c(1, 0)) …Run Code Online (Sandbox Code Playgroud) 我有这个R代码,它可以很好地工作,如果我在R控制台中运行它或者作为一个RScript,我会获得带有该图的位图
library(DBI);
library(RMySQL);
library(brew);
library(lattice);
con <- dbConnect(MySQL(),server credentials)
x <- dbGetQuery(con,"SELECT name, distance FROM distances")
bitmap("/tmp/dist_6078.bmp")
dotplot(x$distance~x$name, col='red', xlab='name', ylab='distance', main='Distance plot')
dev.off()
Run Code Online (Sandbox Code Playgroud)
问题是,如果我将所有内容都包含在<%和%>之间并使用brew库,我会得到一张空白图片.如果我使用基本的R图,一切正常,只有当我使用格子时问题.
我绘图中的R箱百分图,使用该盒百分面板功能从Hmisc(panel.bpplot)用bwplot来自lattice.
我有一个数字向量(Length),并希望在因子变量(Month)的级别上显示它的分布.
这是假数据的一个例子:
例如,
set.seed(13)
Length<-sample(1:10, 1000, replace=TRUE)
Month<-sample(c("Apr","May","Jul","Aug","Sep","Nov"), 1000, replace=TRUE)
df<-cbind(Month, Length)
df<-as.data.frame(df)
df$Month<-factor(df$Month, levels=c("Apr","May","Jul","Aug","Sep","Nov"))
df$Length<-as.numeric(df$Length)
#plot horizontal box-percentile plot;
bwplot(Month~Length, data=df, panel=panel.bpplot)
Run Code Online (Sandbox Code Playgroud)
这很好用.但我希望这些图是垂直的,Month在x轴和Lengthy轴上.panel.bpplot说水平图的文档使类别级别更加明显,但是,就我的目的而言,我特别需要一个垂直图.有没有办法修改panel.bpplot来做到这一点?
给定如下数据框,有2个或更多因素:
data <- data.frame(V1=sample(c('A','B','C'), 50, T), V2=sample(c('X','Y'),50,T))
Run Code Online (Sandbox Code Playgroud)
我可以独立制作一个因子列表的条形图,例如:
library(lattice)
with(data, barchart(V1))
Run Code Online (Sandbox Code Playgroud)
如何根据第二个因子的值制作多面板图?我期望使用的语法是:
with(data, barchart(V1 | V2))
Run Code Online (Sandbox Code Playgroud)
但这会产生以下警告:
Warning message:
In Ops.factor(V1, V2) : | not meaningful for factors
Run Code Online (Sandbox Code Playgroud)
并没有有意义的输出.
这里有数据和假设:
set.seed(1234)
myd <- data.frame (X = rnorm (100), Y = rnorm (100, 10, 3))
Run Code Online (Sandbox Code Playgroud)
只是对X和Y进行控制,有时这可能是与X和Y不同的变量,而且是类别本身
myd$xcat <- cut (myd$X, 10)
myd$ycat <- cut (myd$Y, 10)
Run Code Online (Sandbox Code Playgroud)
我想制作如下的好情节,其中餐馆正在绘制热图图形条

require(ggplot2)
ggplot(myd, aes(x=X, y=Y)) + geom_point(shape=1) + theme_bw()
Run Code Online (Sandbox Code Playgroud)
这可能是ggplot2或其他软件包还是需要专门的解决方案?
我的数据如下:
service,rating_1,rating_2,rating_3,rating_4,rating_5
renew_patent,0,0,1,2,11
apply_benefit,21,20,121,828,1744
apply_employment_tribunal,0,0,0,0,0
Run Code Online (Sandbox Code Playgroud)
我希望R为每行打印一个直方图,列为直方图的条形.
到目前为止我有这个:
require(lattice)
data <- read.csv("test.csv", header = TRUE)
colors = c('red', 'orange', 'yellow', 'blue', 'green')
barchart(rating_1+rating_2+rating_3+rating_4+rating_5 ~ service, data=data,
auto.key=list(space='right'), scales=list(x=list(rot=45)),
ylab="Percentage of total", col=colors)
Run Code Online (Sandbox Code Playgroud)
它正在工作,但它只是改变了条形的颜色,而不是图例的颜色.
如何指定图例的颜色以及条形图?
我想删除栅格数据集的"levelplot"图中的框架.不知道怎么做.
library(raster)
library(rasterVis)
f <- system.file("external/test.grd", package="raster")
r <- raster(f)
s <- stack(r, r+500, r-500)
levelplot(s, contour=TRUE)
levelplot(s)
levelplot(s,box=FALSE,axes=FALSE) # It doesn't work.
Run Code Online (Sandbox Code Playgroud) 我需要创建一个具有三个段颜色的segplot:一个用于间隔低于1,一个用于间隔优于1,另一个用于包含1的间隔.
df <- read.table(header=T, text='
geno n rd lower upper
A7002 7 1.12 0.94 1.30
ANTA82RR 12 1.00 0.91 1.09
BR05-83097 5 0.84 0.41 1.27
BR05-86275 5 0.64 0.25 0.93
BRM04-1660 7 1.26 1.02 1.50
BRN03-1404 5 1.03 0.88 1.18
BRN05-0656 5 0.57 0.47 0.67
')
library(latticeExtra)
segplot(reorder(factor(geno), rd) ~ lower + upper,
data = df,
xlim=c(-1, 2.5),
draw.bands = FALSE, centers = rd,
panel = function (x,y,z,...){
panel.segplot(x,y,z,...)
panel.abline(v=1,lty=3)
}
)
Run Code Online (Sandbox Code Playgroud)
提前致谢.
我想打印lattice::xyplot包含分组的点和线的,但是y对于x每个组中的许多单个值,我都有多个值。我希望打印一条分段的线,以便对于每个x值,它都通过y每个组中相关值的平均值。
这是一个例子:
使用此数据:
set.seed(1)
d <- data.frame(x=sample(6, 20, replace=TRUE), y=rnorm(20), g=factor(sample(2, 20, replace=TRUE)))
# Shift one group
d$y[d$g==2] = d$y[d$g==2] + 5
Run Code Online (Sandbox Code Playgroud)
我转移了一组,所以线条在视觉上更具吸引力。
散点图如下所示:
xyplot(y ~ x, data=d, groups=g)
Run Code Online (Sandbox Code Playgroud)
仅仅添加行真是一团糟:
xyplot(y ~ x, data=d, groups=g, type=c('p','l'))
Run Code Online (Sandbox Code Playgroud)
如果对x值进行排序会更好一些,但仍然不是我想要的:
xyplot(y ~ x, data=d[order(d$x),], groups=g, type=c('p','l'))
Run Code Online (Sandbox Code Playgroud)
我需要以与图1所示相同的格式制作几个时间序列图.我对格式本身感兴趣.
我将非常感谢你的帮助.
这是一个模拟数据的最小例子
set.seed(1234)
nobs<-50
x<-rnorm(nobs,0,10)
t<-seq(1,nobs)
data<-ts(20+x+t, freq=4, start=c(2004,1))
par(family="serif")
plot(data, lwd=2, col="blue4", ylab="Millions")
title(main="Gráfico 1. Evolución del ...")
legend(2010,10,"GDP", col="blue4",lwd=2)
abline(lm(data~t), lwd=2, col="red") # This does not work
Run Code Online (Sandbox Code Playgroud)