我正在使用长格式的数据框来创建面板密度图lattice。现在我想在每个面板内的中值 x 值处添加一条垂直线。dotplot我在(http://r.789695.n4.nabble.com/how-to-add-a-vertical-line-for-each-panel-in-a-lattice-dotplot-中找到了这样做的建议with-log-scale-td4632513.html),但这对我不起作用。这是我的代码:
data(Chem97, package="mlmRev")
densityplot(~gcsescore | factor(score), data=Chem97,
panel=function(...){
panel.densityplot(...)
median.values <- median(x)
panel.abline(v=median.values, col.line="red")
})
Run Code Online (Sandbox Code Playgroud)
错误是:Object x not found。所以我尝试了以下方法:
panel=function(x,...){
panel.densityplot(...)
}
Run Code Online (Sandbox Code Playgroud)
当我将x参数添加到面板函数时,我收到错误Error using packet 1 (2, 3 etc.). x is missing。
出了什么问题?
这是我关于使用格子中的条形图绘制定义组的问答的后续。因此,按照这个小练习的解决方案,我意识到 R 会按照数据框中出现的方式绘制数据,并在下一行数据分配到条形图上的另一个空间时在每个条形之间留出空格。如果你看看情节你就会明白我的意思:
> data.frame(SOExample2)
Study.ID Diagnosis Level
1 1 Cancer 1040.58
2 2 Cancer 810.92
3 3 Cancer 2087.80
4 4 Cancer 3959.02
5 5 Cancer 3648.48
6 6 Cancer 1191.74
7 7 Cancer 1156.90
8 8 Cancer 2705.56
9 9 Cancer 827.26
10 10 Cancer 867.16
11 11 Cancer 575.10
12 12 Cancer 699.85
13 13 Cancer 1121.86
14 14 Cancer 1830.62
15 15 Cancer 4203.01
16 16 Cancer 874.59
17 17 Cancer 1037.20
18 18 Cancer 1398.56 …Run Code Online (Sandbox Code Playgroud) 我有这样的事情:
a <- c(1,4,2,8)
b <- c(100,80,40, 0)
c <- 1:4
x <- rep("foo",4)
y <- rep("bar",4)
df1 <- data.frame(c, y = a, gr = x)
df2 <- data.frame(c, y = b, gr = y)
df <- rbind(df1,df2)
xyplot(y ~ c, data = df, type = "l", group = df$gr)
Run Code Online (Sandbox Code Playgroud)
结果如下:
我正在寻找一种方法,允许我更改比例,以便蓝线填充整个面板区域,并在图的右侧添加相应的轴。
如果添加轴太难,那么就不是必需的。无论如何,y 轴上的单位是任意的(在我自己的数据中)。也许一种标准化数据的方法会起作用?
该网站上有几个答案,但它们都适用于 R 的基本图形,并且没有使用点阵。
**编辑:**很抱歉,但情况可能比我所展示的要复杂一些。但是,您的两个脚本都可以工作,尽管由于点重叠,第一个脚本对于大型数据集可能不太清楚!非常感谢萨莎!
我想首先显示几个变量对,然后叠加同一数据集的选定数据。通常,可以使用par(new=T)如下方式实现叠加:
h<-rnorm(nc) # this variable was used for conditioning
x<-rnorm(nc)
y<-rnorm(nc)
z<-rnorm(nc)
m<-cbind(x,y,z)
pairs(m)
par(new=T)
pairs(m[h>0.7,],col="red")
Run Code Online (Sandbox Code Playgroud)
然而,该设置似乎par()不适用于这种用途。
那么,格子库可能会有所帮助,例如。splom(),但我不知道它是否真的有效,以及如何有效。有人可以提供一些建议吗?
我怎样才能dotchart在ggplot2中绘制像格子一样的点图,它有更粗的网格线和只有水平网格线(即删除垂直网格线),有点像这样:

除了使水平线更大胆以使它们更加明显.
有没有办法在ggplot2中这样做?
我使用了点阵包装绘制线图。
library(lattice)
xyplot(price~month,groups=perc,data=Edf,type='l',
main="Percentile chart of OpRes Charge Rates Forcast",
ylab="OpRes Charge Rate ($/MWh)", xlab="Months",ylim=c(0,40),auto.key=TRUE)
Run Code Online (Sandbox Code Playgroud)
然后,我想在现有绘图上添加一些点。
points(rep(1,length(OpResWestJan)),OpResWestJan)
Run Code Online (Sandbox Code Playgroud)
OpResWestJan 是向量,但点从未出现在现有图中,也没有警告。
我有以下示例数据,想要创建一个地平线图,area显示year. 有什么建议使用这样做吗ggplot2?
year <- 1990:2005
area1 <- runif(16, 18,20)
area2 <- runif (16,6,6.7)
area3 <- runif(16, 7,8)
dat <- data.frame(year, area1, area2, area3)
Run Code Online (Sandbox Code Playgroud) 附加的脚本对样本变量x,y和z执行等效性测试.
equivalence.xyplot()虽然基本的格子图形很难用,但它确实很方便.如何使用ggplot2绘制这些数据而不是基本点阵图形?
编辑:
例如,using ggplot(plot1)返回以下错误:
错误:ggplot2不知道如何处理类格子的数据
我不知道从哪里开始将格子类数据转换为ggplot2格式.关于将基于格子的图形转换为ggplot2的任何具体建议都将受到赞赏.
require(equivalence)
require(gridExtra)
require(lattice)
x = c(1,4,3,5,3,7,8,6,7,8,9)
y = c(1,5,4,5,3,6,7,6,7,2,8)
z = c(2,4,3,5,4,7,8,5,6,6,9)
mydata = data.frame(x,y,z)
plot1 = equivalence.xyplot(mydata$x~mydata$y,alpha=0.05, b0.ii=0.25, b1.ii=0.25)
plot2 = equivalence.xyplot(mydata$x~mydata$z,alpha=0.05, b0.ii=0.25, b1.ii=0.25)
plot3 = equivalence.xyplot(mydata$y~mydata$z,alpha=0.05, b0.ii=0.25, b1.ii=0.25)
# Combine plots into one figure
grid.arrange(plot1, plot2, plot3, ncol=2)
Run Code Online (Sandbox Code Playgroud)
