我一直在考虑使用par()或layout()函数来组合ggplots.是否可以使用这些功能?
假设我想绘制散点图的ggplot和直方图的ggplot.我希望将这两个图组合在一起(不是在单个画面中).适用吗?
我在R中使用简单的绘图尝试了它,而没有使用ggplot函数.它确实有效.
以下是来自Quick-R的示例链接:http://www.statmethods.net/advgraphs/layout.html
# 4 figures arranged in 2 rows and 2 columns
attach(mtcars)
par(mfrow=c(2,2))
plot(wt,mpg, main="Scatterplot of wt vs. mpg")
plot(wt,disp, main="Scatterplot of wt vs disp")
hist(wt, main="Histogram of wt")
boxplot(wt, main="Boxplot of wt")
# One figure in row 1 and two figures in row 2
attach(mtcars)
layout(matrix(c(1,1,2,3), 2, 2, byrow = TRUE))
hist(wt)
hist(mpg)
hist(disp)
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用ggplot并组合情节时,我没有得到输出.
我的情节中有五(5)个geom_vline(),我希望它们有不同的颜色.有没有办法做到这一点?
这是我的代码,
library(ggplot2)
x <- seq(-7, 8, length = 90)
tvalues <- dt(x,15)
qplot(x, tvalues) + geom_polygon(fill = "purple", colour = "purple", alpha = 0.5) +
geom_point(fill = "purple", colour = "purple", alpha = 0.2, pch = 21) +
geom_vline(xintercept = c(a <- c(-2.27685371, 0.01661155,
0.33598194, 1.92426022), mean(a)), linetype = "dashed", colour = "red") + theme_bw() + xlab(bquote(bold('Average Tensile Strength (lb/in'^'2'*')'))) +
ylab(expression(bold(P(x)))) +
opts(title = expression(bold("Student t Distribution")), plot.title = theme_text(size = 20, colour = "darkblue"),
panel.border = theme_rect(size …Run Code Online (Sandbox Code Playgroud) 我试图提取聚类中使用的颜色circlize_dendrogram.这是一个示例代码:
library(magrittr)
library(dendextend)
cols <- c("#009000", "#FF033E", "#CB410B", "#3B444B", "#007FFF")
dend <- iris[1:40,-5] %>% dist %>% hclust %>% as.dendrogram
dend <- color_branches(dend, k = 5, col = cols)
dend %<>% set("labels_col", value = cols, k= 5)
dend %<>% set("labels_cex", .8)
dend %<>% set("branches_lwd", 2)
circlize_dendrogram(dend)
Run Code Online (Sandbox Code Playgroud)
以便使用提取列表簇cutree(dend, k = 5).有没有办法根据cols给定的?提取树形图中簇的颜色?我需要它来使用grid包在图中插入图例.
示例,图例:群集1 - #009000; 集群2 - #FF033E; 集群3 - #CB410B; 集群4 - #3B444B; 集群5 - #007FFF.问题circlize_dendrogram是用于群集的颜色的顺序是不同的.
虽然我可以手动执行此操作,但如果我可以自动执行此操作会很有效.如果我可以提取簇的颜色,这是可能的.
我在两列幻灯片中对齐代码时遇到问题.

这是我的幻灯片代码,
--- &twocol
## Sample R Codes
*** =left
```{r, echo=FALSE}
options(width=30)
```
```{r, fig.height=5.5,highlight=TRUE, fig.show='hide',tidy=TRUE}
mvreg.sim <- function(xcov,beta1=matrix(c(0.7, 0.2, 0.2, 0.7),
nr = 2, nc = 2), err.mu=c(0,0),
err.sigma=matrix(c(100,0,0,100), nr=2)){
library(mvtnorm)
N <- nrow(xcov)
e <- rmvnorm(N, mean = err.mu, sigma = err.sigma)
y <- matrix(NA, nrow = N, ncol = 2)
for(i in 1:N){
y[i,] <- (xcov[i,])%*%beta1 + e[i,]
}
return(y)
}
```
*** =right
This is the explanation of the plot.
```{r, fig.height=5.5,highlight=TRUE,echo=FALSE}
x <- seq(0,10, …Run Code Online (Sandbox Code Playgroud) 这是我的网站中嵌入的应用程序.我想摆脱我的应用程序下面的滚动小部件,这是由于tabsetPanel的宽度.
我使用以下代码嵌入了应用程序:
<iframe width="800" height="480" frameborder="0" src="http://spark.rstudio.com/alstated/meanvar/"></iframe>
Run Code Online (Sandbox Code Playgroud)
应用代码:
ui.R
library(shiny)
# Define UI for application that plots random distributions
shinyUI(pageWithSidebar(
headerPanel(title = ""),
sidebarPanel(
sliderInput("size",
"Number of Observations",
min = 10,
max = 200,
value = 95),
sliderInput("mu",
"Mean",
min = -100,
max = 100,
value = 0),
sliderInput("sd",
"Standard Deviation",
min = 1,
max = 6,
value = 3),
checkboxInput(inputId = "indiv_obs",
label = "Show individual observations",
value = FALSE),
checkboxInput(inputId = "density",
label = "Show density …Run Code Online (Sandbox Code Playgroud) 好的,我一直在寻找一个功能,可以帮助我改变xyplot中回归线的大小.我试过panel.abline(reg = coef, size = 2)但它不起作用.
听到我的代码,
Plot.col <- brewer.pal(8,"Set1")[8][cut(Std.Change, c(-2.5,2.5), label = FALSE)]
Plot.ord <- rev(order(Std.Change))
coef <- coef(lm(Std.ModernC ~ Std.Change, data = Std.DataReg))
xyplot(Std.ModernC ~ Std.Change, data = Std.DataReg[Plot.ord, ], type = c("p", "g"), col = "blue",pch = 21, fill = Plot.col[Plot.ord], cex = 1.3,panel = function(...) {
panel.xyplot(...)
panel.abline(reg = coef, col = "blue")})
Run Code Online (Sandbox Code Playgroud)
在ggplot中,只需设置就可以很容易地改变回归线的大小 geom_abline(size = 2)
我还在学习格子,我不知道是否有这个功能,或者无论如何.
任何帮助深表感谢.
这个问题可能与其他问题类似,但是当我检查它们时,它们与我正在寻找的有点不同.这是我的代码,
Data <- rbind(c(54, 55, 51), c(52, 51, 57))
WMatrix <- rbind(c(0, 1), c(1, 0))
for(i in 1:2){
for(j in 1:2){
for(t in 1:2){
print(WMatrix[i,j]*Data[j,t]*Data[i,t+1])
}
}
}
Run Code Online (Sandbox Code Playgroud)
这些代码的输出是,
[1] 0
[1] 0
[1] 2860
[1] 2601
[1] 2754
[1] 3135
[1] 0
[1] 0
Run Code Online (Sandbox Code Playgroud)
现在,我希望从循环中立即生成此输出的总和(不列出它).也就是说,循环的输出应该是11350,这是循环中所有生成的输出的总和.我知道这个问题可能很简单,但我还在学习基本的编程.我试过这个,
for(i in 1:2){
for(j in 1:2){
for(t in 1:2){
print(sum(WMatrix[i,j]*Data[j,t]*Data[i,t+1]))
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,输出仍然是相同的,有人可以帮助我吗?
谢谢 :)
r ×7
ggplot2 ×2
dendextend ×1
for-loop ×1
lattice ×1
layout ×1
loops ×1
par ×1
regression ×1
shiny ×1
slidify ×1
statistics ×1