我正在尝试开发一个像天气数据中出现的那样的天气图 - 类似的东西。

我想绘制每日价值(尽管平均值可以出现在圆圈中)。我使用 ggplot2 因为它需要多方面(每个月和每年)。
st <- as.Date ("2009-1-1")
en <- as.Date ("2011-12-28")
date1 <- seq(st, en, "1 day")
year <- format(date1, "%Y")
month <- format (date1, "%b")
day <- as.numeric (format(date1, "%d"))
avgtm <- round (rnorm (length(date1), 50,5), 1)
maxtm <- avgtm + abs(rnorm (length (avgtm), 0, 5))
mintm <- avgtm - abs(rnorm (length (avgtm), 0, 5))
myd <- data.frame ( year, month, day, avgtm, maxtm, mintm)
require(ggplot2)
qplot(day, avgtm, data = myd, geom = "line", col = …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个带有许多hexbin图的 PDF ,我希望每页有特定数量的图。
这个有效:
PDFPath = "C:\\temp\\some.pdf"
pdf(file=PDFPath)
par(mfrow = c(2,2))
for (i in seq(5,10))
{
VAR1 = rnorm(i)
VAR2 = rnorm(i)
plot(VAR1, VAR2)
}
dev.off()
Run Code Online (Sandbox Code Playgroud)
这个不行。它每页只生成一个图:
library(hexbin)
PDFPath = "C:\\temp\\some.pdf"
pdf(file = PDFPath)
par(mfrow = c(2,2))
for (i in seq(5,10))
{
VAR1 = rnorm(i)
VAR2 = rnorm(i)
plot(hexbinplot(VAR1 ~ VAR2))
}
dev.off()
Run Code Online (Sandbox Code Playgroud)
关于出了什么问题的任何想法?
编辑:
我刚刚注意到,原因是mfrow仅指基础图形而不是网格图形。有没有办法实现类似的结果hexbin?
假设我想在xyplot没有明确指定轴限制的情况下创建一个普通的,那么轴限制是如何计算的?
以下代码行生成一个简单的散点图。但是,轴限制的范围并不完全在 1 到 10 之间,而是略微扩展到左侧和右侧以及顶部和底部(大约 0.5)。
library(lattice)
xyplot(1:10 ~ 1:10, cex = 1.5, pch = 20, col = "black",
xlab = "x", ylab = "y")
Run Code Online (Sandbox Code Playgroud)

有没有办法确定轴在每个站点上扩展的因子,例如使用trellis.par.get?执行上述xyplot命令后,我已经尝试了以下操作:
library(grid)
downViewport(trellis.vpname(name = "figure"))
current.panel.limits()
$xlim
[1] 0 1
$ylim
[1] 0 1
Run Code Online (Sandbox Code Playgroud)
不幸的是,面板限制作为归一化父坐标返回,这使得无法获得“真实”限制。任何建议将不胜感激!
更新:
使用 base-R plot,默认情况下,数据范围(以及轴限制)在每侧扩展 4%,请参阅?par。但是这个因素似乎不适用于“格子”对象。所以我正在寻找的是类似于在par.
假设我们有一些这样的数据:
dta <- data.frame(
group = rep(letters[1:8], each=1000),
x = runif(8000), y=runif(8000)
)
Run Code Online (Sandbox Code Playgroud)
我想为每个组生成一个包含 y ~ x 的格子图。但是,组广告位于第一行,呃位于第二行。即,我想做相当于
qplot(x=x, y=y, data=dta) + facet_wrap(~ group, nrow=2)
Run Code Online (Sandbox Code Playgroud)
但在莱迪思。做这个的最好方式是什么?
我用 R 的格子包可视化了一个矩阵,以获得 10x10 的网格。
不幸的是,我确实在微调方面遇到了一些问题。
颜色条需要一个解释性标题(垂直写在它旁边)。
这是一个示例代码,可以看看它现在的样子以及一张图片。
library(lattice)
#Build the horizontal and vertical axis information
hor=c("0.0005", "0.001", "0.005", "0.01", "0.05", "0.1", "0.5", "1", "5", "10")
ver=c("1000","2000","3000","4000","5000","6000","7000","8000","9000","10000")
nrowcol=length(ver)
cor = matrix(runif(nrowcol*nrowcol, min=0.4), nrow=nrowcol, ncol=nrowcol, dimnames = list(hor, ver))
for (i in 1:nrowcol) cor[i,i] = 1
rgb.palette <- colorRampPalette(c("blue", "yellow"), space = "rgb")
levelplot(cor, col.regions=rgb.palette(120), cuts=100, at=seq(0,1,0.01),
xlab=expression("DAG depletion rate k"[B49] *" [ s"^"-1"*" ]"),
ylab=expression("PKC activation rate k"[D5] *" [ l / (mol*s) ]"))
Run Code Online (Sandbox Code Playgroud)
你猜我该如何解决这些小问题吗?
最好,非常感谢!
我正在使用这个问题中的解决方案来尝试绘制具有指定间隔的条形图:
我创建了间隔并尝试在函数中使用它们barplot,但我显然在某个地方缺少一个步骤,并且我不确定如何让它工作。这是我的代码和我收到的错误:
> library(lattice)
> a = c(0,10)
> b = c(11,20)
> c = c(21,30)
> d = c(31,40)
> e = c(41,50)
> f = c(51,60)
> g = c(61,70)
> h = c(71,80)
> i = c(81,90)
> j = c(91,100)
> k = c(101,120)
> l = c(121,150)
> m = c(151,200)
> n = c(201,500)
> o = c(501,3600)
> mybins = matrix(rbind(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o), ncol=2)
> shx <- shingle(data5$q3totalScleralLensesFit, intervals=mybins)
> …Run Code Online (Sandbox Code Playgroud) 我正在尝试将 A 和 B 标签添加到我使用 grid.arrange 函数组合的两个点阵图中。我无法让 B 标签出现在我想要的位置。我希望字母 A 位于顶部图的左侧和上方,而字母 B 位于底部图的左侧和上方。我尝试将行代码更改为不同的数字,但没有成功。
以下是一些示例数据:
data1<-data.frame(x=c(1:60),y=rep(c("A","B"),each=30),w=rep(c("V1","V2","V3"),times=20))
Plotting Code
require(lattice);require(grid.Extra)
p1<-bwplot(x~y, data = data1, groups = w,
pch = "|", box.width = 1/6, par.settings =mytheme ,scales=list(x=list(cex=1.2),y=list(cex=1.2)),
ylab=list("Number of Scallops per Station",fontsize=15),xlab=list("Strata",fontsize=15),
panel = panel.superpose,
panel.groups = function(x, y, ..., cex,group.number,col) {
panel.bwplot(x + (group.number-1.5)/6,y,...)
})
p2<-barchart(x~y|w,type="count",layout=c(3,1),data=data1,
col="light gray", xlab="Binned Number of Scallops per Station",ylab="Count",horizontal=F,
strip = strip.custom(bg="white",strip.levels = T),as.table=T,origin=0,family="A",
scales=list(relation="same",alternating=1,x=list(cex=1.2),y=list(cex=1.2)),
par.settings = list( grid.pars =
list(fontfamily = 'serif',cex=1.2)),
panel=function(x,y,...){
panel.barchart(x,y,...)})
grid.arrange(p1,p2)
mtext("A",3,line=2,cex=1.2,at=0,family="serif") …Run Code Online (Sandbox Code Playgroud) 我要分配在两个α值xyplot面板功能:
点与alpha= 0.3和线带alpha=1。下面是一个例子:
library(lattice)
library(sp)
data(meuse)
xyplot(elev~ copper,data=meuse,groups=factor(soil),grid = TRUE,scales=list(tck=c(1,0), x=list(cex=1.1), y=list(cex=1.1)),
auto.key = list(space = 'right',text=c("1", "2", "3")),
par.settings = list(superpose.symbol = list(pch =20, cex = 1,
col = c("#006837", "#41ab5d","#fd8d3c"))),
type = c("p", "smooth"),col.line =c("#006837", "#41ab5d","#fd8d3c"),lwd = 5,
panel = function(x, ...) {
panel.xyplot(x, ..., alpha = 0.3)
panel.lines(x, ..., alpha = 1)
})
Run Code Online (Sandbox Code Playgroud) 我在R中生成了以下图表:

在Y轴上,我有蛋白质名称以及以.pdb结尾的文件名.如何在一行上生成蛋白质名称,在下一行中创建文件名?
我使用以下命令生成图:
library(lattice) <br>
data <- read.table("~/Documents/R/test.txt", header=F, sep="\t") <br>
dotplot(V1~V2, xlim=c(0, 2.5), xlab="RMSD Distribution", data=data)
Run Code Online (Sandbox Code Playgroud)
示例输入文件如下所示:
Serum Amyloid P Pentamer: 1sac.pdb 0.7125 <br>
Serum Amyloid P Pentamer: 1sac.pdb 0.7917 <br>
Serum Amyloid P Pentamer: 1sac.pdb 0.7819 <br>
Serum Amyloid P Pentamer: 1sac.pdb 0.7762 <br>
Serum Amyloid P Pentamer: 1sac.pdb 1.0233 <br>
Serum Amyloid P Pentamer: 1sac.pdb 0.6896 <br>
Run Code Online (Sandbox Code Playgroud)
不显示值和文件之间的选项卡.
我已经看过关于这个主题的两个相似的问题,但是找不到我正在寻找的答案.as.table函数将字母序列从左下角开始到左上角开始,但不对组内窗格的顺序做任何改变.
数据(我的客户专有)具有字母和数字组合的电台标识.如果在绘制的所有网站的组中有一系列具有相同首字母的网站,则它们按第一个数字排序,而不是我们人类统计的方式.例如,SW-1,SW-10,SW-11,SW-2,SW-3.我希望它们按顺序SW-1,SW-2,SW-3,SW-10,SW-11.我使用的代码是:
xyplot(as.d$quant ~ as.d$sampdate | as.d$site, ylim=range(as.d$quant), xlim=range(as.d$sampdate),
main='Arsenic By Time', ylab='Concentraion (mg/L)', xlab='Time')
Run Code Online (Sandbox Code Playgroud)
我不知道如何附加得到的图的.pdf,但是如果有人告诉我如何做这个的话会这样做.