小编Gim*_*ist的帖子

如何仅在R中调整y轴标签的大小?

如何仅调整R中Y轴标签的大小?

我知道cex.axis会改变轴标签的大小,但它只会影响x轴.为什么,以及如何调整y轴?

plot r labels

40
推荐指数
3
解决办法
16万
查看次数

如何改变dotplot的形状?

我有一个具有这种基本结构的数据文件:

Type Tm
A 1
A 2
A 3
B 3
B 3
C 1
C 1
C 2
Run Code Online (Sandbox Code Playgroud)

我使用以下方法制作一个dotplot:

ggplot(data=df,aes(x = Tm,fill=Type)) +
geom_dotplot(binwidth=1,method="histodot",stackgroups=TRUE)
Run Code Online (Sandbox Code Playgroud)

它工作正常.但是,我想知道是否可以从默认圆圈更改点的形状.例如,制作A三角形,B方格并将C保留为默认圆圈.我尝试了各种组合scale_shape但没有成功.有时我收到各种错误信息,有时没有任何反应.这导致我得出的结论是,我做错了什么,或者说它甚至不可能.哪一个?

编辑

joran从2013年2月发表的评论称尚未实施.在过去的一年半中,这个领域有没有发展?

r ggplot2

8
推荐指数
1
解决办法
2399
查看次数

如何在使用theme_bw时删除ggplot2图例中各个条目周围的灰色边框?

我在R中有以下代码:

library(ggplot2)
theme_set(theme_bw())
p <- ggplot(mtcars, aes(wt, mpg))
p <- p + geom_point(aes(colour = factor(cyl)))
p
Run Code Online (Sandbox Code Playgroud)

结果如下:

传奇中的ggplot2灰色边框

每个图例条目周围都有一个灰色边框.如何删除它?

r legend ggplot2

6
推荐指数
1
解决办法
2909
查看次数

如何在格子中为每个面板添加不同的文本

我想在格子的xyplot中为每个面板添加不同的文本.

res<- xyplot(CumSpec ~ CumTotal | Site, data=data1, index.cond=list(c(1,2,3)),layout = c(3,1,1), aspect = 1,
         axis=axis.overlap, origin=0, xlab="Total number of individuals", ylab="Total number of species",
         between = list(x = 0), 
         scales=list(tick.number = 8, cex = .9, x=list(alternating=1), x=list(rot=90)),
         par.settings = my.settings,
         par.strip.text=list(col="white", font=2),
panel = function(x, y) {
panel.xyplot(x, y)

panel.abline(lm(y ~ x), lwd = 0.5, lty=2)
panel.text(400, 4.6, label="R=0.334", font=1)
}) 
res
Run Code Online (Sandbox Code Playgroud)

我曾尝试使用panel.text,但它将标签添加到每个面板.有谁知道怎么做到这一点,拜托?你的帮助将不胜感激.

r lattice

5
推荐指数
1
解决办法
6087
查看次数

按矢量,按行而不是按列划分数据帧

我有这个数据框和向量,我想用以下行划分行:

div <- c(10,100,1000)
df <- as.data.frame(matrix(rep(1,9),nrow=3))
df <- cbind(type = as.factor(c("A","B","C")),df)
> df
  type V1 V2 V3
1    A  1  1  1
2    B  1  1  1
3    C  1  1  1
Run Code Online (Sandbox Code Playgroud)

我希望以数据框形式给出答案,并保留原因.将它与向量分开时,我得到了"错误"的答案:

df1 <- cbind(df[,1], df[,-1]/div)
> df1
  df[, 1]    V1    V2    V3
1       A 0.100 0.100 0.100
2       B 0.010 0.010 0.010
3       C 0.001 0.001 0.001
Run Code Online (Sandbox Code Playgroud)

我希望每行除以向量,而不是每列.

我的解决方法是:

divfun <- function(x){
  x / div
}

df2 <- cbind(df[,1], t(apply(df[,-1], 1, divfun)))
> df2
        V1   V2    V3 …
Run Code Online (Sandbox Code Playgroud)

r

3
推荐指数
1
解决办法
4812
查看次数

在R表达式中组合矢量变量用于绘图文本

我试图在R图中创建一个文本图层,其中包含从变量派生的普通文本和上标文本.

到目前为止我有这个:

first = c("one", "two", "three")
second = c(1, 2, 3)
plot(1:3, 3:1)
text(1:3, 3:1, labels=first)
Run Code Online (Sandbox Code Playgroud)

它现在的工作方式,它在情节上显示了一个,两个等.我想让它显示一个12,等等.

我想这应该是一些组合expression,paste,bquote也许另一个功能.我只是无法让它将数据作为向量读取并制作正确的上标.

我在这个网站上看到了一些问题,例如:

他们都没有完全回答我的问题.

plot expression r

2
推荐指数
1
解决办法
622
查看次数

格子:在同一面板中绘制具有不同比例和轴的两条线

我有这样的事情:

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 的基本图形,并且没有使用点阵。

r graph scale lattice axis-labels

1
推荐指数
1
解决办法
1404
查看次数

如何在 R 中的 write.csv() 输出之前添加任意行文本?

最小的可重复示例

我有这个代码:

df <- data.frame(foo = 1:5, bar = 5:1)

bla <- "some text"

write.csv(df, "foobar.csv")
Run Code Online (Sandbox Code Playgroud)

我希望最终的 foobar.csv 看起来像这样:

some text

"","foo","bar"
"1",1,5
"2",2,4
"3",3,3
"4",4,2
"5",5,1
Run Code Online (Sandbox Code Playgroud)

更广泛的背景

这是 Shiny 应用程序的一部分,我在服务器功能中有这一点:

  output$dlcsv <- downloadHandler(
    filename = function() {
      paste0(format(Sys.time(), "%Y%M%e%H%M%S"), ".csv")
    },
    content = function(file) {
      write.csv(datareactive(), file)
    }
  )
Run Code Online (Sandbox Code Playgroud)

output$dlcsv是一个下载按钮,datareactive()是我导出到以今天的日期和时间命名的 csv 的数据框。我想在数据本身之前向文本文件添加一些行。因此,上述问题的解决方案需要在这种情况下起作用。

r shiny

1
推荐指数
1
解决办法
23
查看次数

创建堆积直方图

我有这个数据文件:

A
    169
    164
    164
    102
    150
    100
    145
B
    145
    107
    115
    120
    140
Run Code Online (Sandbox Code Playgroud)

我想从中创建一个堆积直方图.我想设置一个范围(比方说100到170),为X轴设置bin宽度(比如说10),并计算每个bin中有多少(例如140到149在A中有1)和B)中的2,并使用条形图在Y轴上绘制计数.对于A计数和B计数,着色(或阴影或其他)将是不同的.我试着看看gnuplot的直方图演示,在某些情况下看起来确实相似,但我无法弄清楚如何让它工作.也没有运气python + matplotlib或R.重新排序数据类似的东西

 A B
 169 145
 164 107
 164 115
 102 120
 150 140
 100
 145
Run Code Online (Sandbox Code Playgroud)

如果需要,不是问题.

r gnuplot matplotlib histogram

0
推荐指数
1
解决办法
520
查看次数