警告......非常新手问题如下:
我试图绘制几个(X,Y)点的相当规则的分布,每个点与一个值相关联,让我们调用Z,它在-20到+20之间变化非常不规则.我对平滑感兴趣; 我想要点Z值根据平滑变化的调色板绘制,就像Gnuplot可以使用适当的平滑调色板一样.我已经尝试过基础R,ggplot2和latticeExtra,尽我所能,我可以提出以下几乎可以做到的事情:
library(lattice)
library(latticeExtra)
library(colorRamps)
df = read.table(file"whatever", header=T)
levelplot(Z~X*Y, df, panel=panel.levelplot.points, cex=0.2,
col.regions=colorRampPalette(c("red","white","blue"))(50))
Run Code Online (Sandbox Code Playgroud)
一个数据点如下:1302525 225167 -3.5
当我用最后一个代码行中的"50"绘制我的数据帧为3时,我得到红色,白色和蓝色的可预测的R再循环行为,重复五次,第16个颜色条段为白色.将3更改为7会导致更多的红色和蓝色阴影创建2个重复颜色范围段,并在颜色范围尝试回收时留下两个微红色.这表明使这个数字更大可以使颜色更精细.但如果我输入一个大于16的数字,那就是我得到的16个彩色片段,从红色到白色均匀变换为蓝色.但是我希望色标更精细,并且在完美的世界中,将Z的零强制为白色.
到目前为止我对R的经验是,当我不能做到这么简单的事情时,我错过了一个非常基本的概念.它是什么?
是否可以使用库中创建的元素(或使用类似函数创建的元素)来注释lattice(或ggplot2)图形?polygon()graphics
除了在网上发布并在Deepayan Sarkar的书中印刷的简单图表的示例之外,我对这两个图书馆都不太熟悉.因此,虽然我有代码用于我在R中使用graphics库进行的操作,但我lattice还是ggplot2会特别感谢相关的,等效的函数和用法示例.谢谢.
我想在R中的格子图中添加一个图例,显示两组的密度.我已将默认颜色更改为黑色和灰色.但是,图例没有更新颜色.
set.seed(4444)
x1 <- rep("Group A", 50)
x2 <- rep("Group B", 50)
y1 <- rnorm(50, 0, 2)
y2 <- rnorm(50, 1, 2)
dtf <- data.frame(x=c(x1, x2), y =c(y1, y2))
print(densityplot(~y, groups=x, data=dtf,
pch=".",
cex=2,
col=c("black", "gray"),
auto.key=TRUE,
xlab="Y"))
Run Code Online (Sandbox Code Playgroud)

如何制作直方图,其中每个条的中心位于公共轴上?这看起来像一个阶梯形边缘的小提琴情节.
我想在莱迪思这样做,并不介意自定义面板功能等,但很乐意使用基本R图形甚至ggplot2.(我还没有把自己投入到ggplot2中,但是会在某些时候采取行动.)
(为什么我要这样做?我认为当数据是离散的并且以几个[5-50]均匀间隔的数值出现时,它可能是一个有用的替代小提琴图.每个bin然后代表一个点.当然我可以生成一个正常的直方图.但我认为有时显示盒须图和小提琴图是有用的.对于定期间隔的离散数据,具有与boxplot相同方向的对称直方图可以进行比较用箱形图绘制数据的详细结构,就像小提琴情节一样.在这种情况下,对称直方图可能比小提琴情节更具信息性.(豆图可能是我刚才描述的另一种选择,尽管事实上我的数据不是字面上离散的 - 它只是收敛到一系列常规值附近.这使得R的beanplot包对我来说没用,除非我通过将它们映射到最接近的常规值来规范化值.))
以下是一些数据的30个观察子集,它是由基于代理的模拟生成的:
df30 <- data.frame(crime.v=c(0.2069526, 0.2063516, 0.06919754,
0.2080366, -0.06975912, 0.206277, 0.3457634, 0.2058985, 0.3428499,
0.3428159, 0.06746109, -0.07068694, 0.4826098, -0.06910966, 0.06769761,
0.2098732, 0.3482267, 0.3483602, 0.4829777, 0.06844112, 0.2093492,
0.4845478, 0.2093505, 0.3482845, 0.3459249, 0.2106339, 0.2098397,
0.4844956, 0.2108985, 0.2107984), bias=c("beast", "beast", "beast",
"beast", "beast", "beast", "beast", "beast", "beast", "beast", "beast",
"beast", "beast", "beast", "beast", "virus", "virus", "virus", "virus",
"virus", "virus", "virus", "virus", "virus", "virus", "virus", "virus",
"virus", "virus", "virus"))
Run Code Online (Sandbox Code Playgroud)
df可以从此链接下载以Rdata文件中的完整600个观察值命名的数据框:CVexample.rdata.
这些crime.v值都接近以下之一,我称之为焦点:
[1] -0.89115386 -0.75346155 -0.61576924 -0.47807693 …Run Code Online (Sandbox Code Playgroud) 只有在连接具有正斜率时,才能以一种舒适的方式连接点?(否则该函数的行为应与xyplot(...)完全相同)
library(lattice)
dat <- data.frame(x=1:10,y=sample(1:10))
xyplot(y ~ x, data=dat,
panel = function(x, y,...) {
panel.xyplot(x, y, type="o",...)
}
)
Run Code Online (Sandbox Code Playgroud)
所以结果应该像这样的情节,但没有交叉线:

谢谢Christof
我知道如何组合R图形创建的图.做一些像
attach(mtcars)
par(mfrow = c(3,1))
hist(wt)
hist(mpg)
hist(disp)
Run Code Online (Sandbox Code Playgroud)
但是,现在我有三个不同的图形系统
# 1
attach(mtcars)
boxplot(mpg~cyl,
xlab = "Number of Cylinders",
ylab = "Miles per Gallon")
detach(mtcars)
# 2
library(lattice)
attach(mtcars)
bwplot(~mpg | cyl,
xlab = "Number of Cylinders",
ylab = "Miles per Gallon")
detach(mtcars)
# 3
library(ggplot2)
mtcars$cyl <- as.factor(mtcars$cyl)
qplot(cyl, mpg, data = mtcars, geom = ("boxplot"),
xlab = "Number of Cylinders",
ylab = "Miles per Gallon")
Run Code Online (Sandbox Code Playgroud)
该par方法不再起作用.我该如何组合它们?
我有以下条形图,我想添加错误栏.
library(lattice)
barchart(Change~fTreat,groups=Process,change,
auto.key=list(points=FALSE,rectangles=TRUE),
panel=function(x, y,...){
panel.barchart(x,y,origin = 0,...);
panel.abline(h=0,col="black",...);
}
)
Run Code Online (Sandbox Code Playgroud)

我已经尝试使用memisc包中的panel.errbars,它对xyplots非常有用,但是当我将它添加到我的代码时它不尊重这些组.
library(memisc)
barchart(cbind(Change,lower,upper)~fTreat,groups=Process,change,
ylab="Pocertage change",
ylim=-115:50,
scales=list(alternating=FALSE,
tick.number=7,
tck=c(-1,0)),
panel=function(x, y,groups,...){
panel.barchart(x,y=change$Change,groups=change$Process,origin = 0,...);
panel.abline(h=0,col="black",...);
panel.errbars(x,y,make.grid="none",ewidth=0.2,type="n",...)
}
)
Run Code Online (Sandbox Code Playgroud)
有关如何使用panel.errbars或任何其他功能向我的绘图添加错误栏的任何想法?
数据:
structure(list(Treat = structure(c(3L, 4L, 1L, 2L, 3L, 4L, 1L,
2L), .Label = c("12-380", "12-750", "8-380", "8-750"), class = "factor"),
Process = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L), .Label = c("Resp",
"Cal"), class = c("ordered", "factor")), Change = c(-33.05,
-34.74, 20.94, 18.06, 6.85, -28.57, -8.1, -78.72), upper …Run Code Online (Sandbox Code Playgroud) 几天前,我设法使用插值在脚本中使用以下命令制作水平图:
levelplot(jan~lon*lat,APM,main="Jan",panel=panel.levelplot.raster,interpolate=T)
Run Code Online (Sandbox Code Playgroud)
我偶然没有保留那个会话,只有脚本,所以我不可能通过历史记录并恢复我用过的所有命令.
现在,在加载latticeExtra之后,相同的命令会生成一个空图.另一方面,省略指令的最后两个元素,即:
levelplot(jan~lon*lat,APM,main="Jan")
Run Code Online (Sandbox Code Playgroud)
绘制图表.
我想在表面进行插值,但是出了点问题
panel=panel.levelplot.raster
Run Code Online (Sandbox Code Playgroud)
加载rasterVis时会发生相同的行为.我想我错过了什么......有什么帮助吗?
数据具有以下结构:
> head(APM)
lat lon jan feb mar apr may jun jul aug sep oct nov dec
1 -18.5 10.5 29.7 28.8 25.6 25.6 26.8 29.9 35.5 46.8 35.5 27.5 27.5 27.9
2 -17.5 10.5 28.8 29.8 26.3 26.2 27.8 31.6 39.7 63.1 40.4 27.6 27.6 28.3
3 -16.5 10.5 28.7 30.0 26.9 26.8 28.6 32.1 41.1 109.4 42.8 29.7 28.9 29.4
4 -15.5 10.5 28.4 29.5 27.5 26.9 29.1 34.2 …Run Code Online (Sandbox Code Playgroud) 大家好,我正在格子图中工作,一切正常,但我对传奇有些麻烦.我正在使用xyplot(),它的工作原理很棒.我的数据框是NM(我dput()在最后部分添加了版本):
AMes A2009 A2010 A2011 A2012 A2013 A2014
1 enero 710004.3 1458624.4 6229245 4407423 3006568 1749746
2 febrero 889398.1 942099.6 5553163 4248144 2615730 1902865
3 marzo 1114883.1 1210951.2 6372920 3537103 2833299 1605746
4 abril 1419242.1 1151423.9 6755055 3500596 3438797 2116088
5 mayo 1585857.2 1598355.1 7119008 4049074 3224926 NA
6 junio 1010455.6 1370856.8 7585412 3279869 2794030 NA
7 julio 1292333.4 1420547.4 7258676 3420974 3003458 NA
8 agosto 1032443.3 2048291.1 7250944 2602310 2486932 NA
9 septiembre …Run Code Online (Sandbox Code Playgroud) 我正在开发一个交互式散点图,以便当用户滚动数据点时,会显示一个标签.但是,我还想在某些数据点之间添加边.
我成功地使用几个库开发了交互式散点图,包括grid,gridSVG,lattice和adegraphics.以下是MWE:
library(grid)
library(gridSVG)
library(lattice)
library(adegraphics)
x = rnorm(10)
y = rnorm(10)
dat = data.frame(label = letters[1:10], x, y)
customPanel2 <- function(x, y, ...) {
for (j in 1:nrow(dat)) {
grid.circle(x[j], y[j], r = unit(.5, "mm"),
default.unit = "native",
name = paste("point", j, sep = "."))
}
}
xyplot(y ~ x, panel = customPanel2, xlab = "x variable", ylab=NULL, scales=list(tck = c(1,0), y=list(at=NULL)))
for (i in 1:nrow(dat)) {
grid.text(as.character(dat$label)[i], x = 0.1, y = 0.01, just = c("left", "bottom"), name …Run Code Online (Sandbox Code Playgroud)