小编Mar*_*dri的帖子

在 ggplot 图例中手动定位标签

我想知道是否可以手动将标签放置在 ggplot 的图例中?

我的例子是这样的:我有一个关于国家/地区的数据,我正在为每个大陆制作 100% 的堆积条形图,所以我有:

dt <- data.table(continent = c(rep('Africa', 2), rep('Asia', 3), rep('Europe', 4)),
                 country = c('Nigeria', 'Kenya',
                             'China', 'India', 'Japan',
                             'Germany', 'Sweden', 'Spain', 'Croatia'),
                 value = runif(9, 0, 10),
                 number=(1:9))


ggplot(data=dt, 
       aes(x = continent, y = value, fill = as.factor(number))) +
  geom_bar(stat = "identity", position = "fill", color='white', width=0.3 ) + 
  labs(x = '', y = 'Percentage') +
  scale_y_continuous(expand=c(0,0)) +
  scale_fill_manual('Country',
                    labels = dt[, country],
                    values = (grDevices::colorRampPalette(c('#BB16A3', '#f8e7f5')))(9)) +
  theme(legend.position='bottom', aspect.ratio = 1) +
  guides(fill = …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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

无法更新/编辑从 R 中的包(`gratia`)导出的 ggplot2 对象

我希望我在这里遗漏了一些令人痛苦的明显的东西。

我希望更新(例如,修复标题、实验室等)从gratia::draw(). 不太确定为什么我无法更新该对象。

有一个简单的解决方案吗?

# devtools::install_github('gavinsimpson/gratia')
library('mgcv')
library('gratia')
dat <- gamSim(1, n = 400, dist = "normal", scale = 2, verbose = FALSE)
mod <- gam(y ~ s(x0),  data = dat, method = "REML")
draw(mod)
Run Code Online (Sandbox Code Playgroud)

p = draw(mod)

# P is a ggobject.
class(p)
#> [1] "gg"     "ggplot"
Run Code Online (Sandbox Code Playgroud)

那么,为什么我无法更新p?

p + ggtitle("My title")
Run Code Online (Sandbox Code Playgroud)

由reprex 包(v0.2.1)于 2019-02-26 创建

r ggplot2

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

将中介包与 lme4 模型一起使用时出错:中介模型尚未实现 - 之前的答案对我不起作用

您好,我是 R 和这个论坛的新手。\n我遇到了与之前的发帖者相同的问题,但我的问题没有得到解决。当我尝试使用包 lme4 和中介运行多级中介模型时,我收到消息:“中介模型尚未实现”。

\n\n

我的数据:

\n\n
data.frame\':    25383 obs. of  115 variables:\n$ PID                        : num  1 1 1 1 1 1 1 1 1 1 ...\n$ T0_AGE                     : num  66.6 79.7 85.6 87 79.9 67.4 80 72 80.1 \n68$ T0_ASEXE                 : Factor w/ 2 levels "Male","Female": 1 1...\n$ T0_ALIVING_R               : num  0 0 0 0 1 0 0 0 1 0 ...\n$ T0_educationcat            : Factor w/ 3 levels "high","middle",..\n$ FI_morbidity_corrected     : num  0.0625 0 0.125 0.0625 …
Run Code Online (Sandbox Code Playgroud)

r lme4

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

在R中使用Likert软件包分析实际调查数据

我对138个问题进行了调查,其中只有少数是李克特型问题,其中一些问题的规模不同。

我一直在尝试使用R中的Likert包来分析和图形化地描绘数据,但是,我在努力理解其中的任何一个方面都非常努力。

我已经看过“演示”,它仅在您已经知道软件包发生了什么情况时才有用。它没有说明能够应用Likert软件包之前必须执行的任何步骤,可以实际应用于该软件包的内容,如何重命名变量等。您得到的只是一堆代码和一个兔子。试图解决所有问题的漏洞。

我已经搜寻了谷歌以获取有关使用Likert软件包的逐步指南,但没有发现任何问题。

任何人都可以将我引到指南中,或者至少可以提供在尝试使用Likert包之前必须对数据框采取的步骤吗?

我希望使用此软件包将我的一些专栏(包含Likert响应)适合堆积的条形图。

一旦我弄清楚了Likert软件包在清理后的数据帧中将接受什么,我应该可以按照演示进行操作……也许..

到目前为止,我是基于我对R的有限知识并试图自行解决问题而做的。

   library(likert)
   library(dplyr)
   fdaff_likert <- select(f2f, RESPID, daff_rate)
   fdaff_likert <- data.frame(fdaff_likert)
   fdaff_likert <- likert(items=fdaff_likert[,2, drop = FALSE], nlevels = 5)
Run Code Online (Sandbox Code Playgroud)

我的likert的输出是:

summary(fdaff_likert)

       Item      low  neutral     high     mean       sd
1 daff_rate 9.977827 37.91574 52.10643 3.802661 1.302508
Run Code Online (Sandbox Code Playgroud)

但是,情节到处都是..(无序)

plot (fdaff_likert)
Run Code Online (Sandbox Code Playgroud)

DAFF性能的堆叠条形图

李克特量表混乱,无法正确居中。另外,如何将y轴重命名为问题?

为了以后进行分析,如何将其划分为组级别(基于在原始数据帧中指定区域的另一列?

r

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

用表达式拆分轴标签

我有一个包含表达式的长标签的图,我想将它分成两行.
在表达式中添加"\n",结果不符合预期.

ylabel <- expression("A very long label with text and \n 
expression"*(alpha+beta) [ij]*"  A very long label with text and expression")
curve(x^3 - 3*x, -2, 2, xlab=xlabel)
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.谢谢

axis r graph

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

rasterGrob 在 gtable 单元格中的绝对定位

我一直在尝试在 gtable 单元格中指定 rasterGrob 的绝对位置,但没有成功。我希望能够使图像的范围与 y 轴上的值对齐。该脚本将钻芯图像与 ggplot2 方面绘制的多传感器数据对齐。例如,特定的放射线核心图像需要其顶部为 192 毫米,底部为 1482 毫米,但我希望比例从 0 到 1523 毫米。请参阅包含的链接以获取我正在做的事情的示例,但为了简单起见,我仅在此处发布了 MWE。是否可以在 gtable 单元格内指定 rasterGrob 的绝对位置?

预期输出样本

就下面的 MWE 而言,迄今为止我唯一的解决方案是Rlogo.png使用使用时设置的相对位置来移动rasterGrob()。使用"native"坐标似乎也不是我所需要的。同样,我无法理解 中调用的位置参数gtable_add_grob()

library(png)
library(ggplot2)
library(gtable)

# read Image
img <- readPNG(system.file("img", "Rlogo.png", package = "png"))

# convert to rastergrob                 
g <- rasterGrob(img, y = unit(0.5, "npc"), x = unit(0.5, "npc"))

# create plot
tp <- qplot(1:5, 1:5, geom="blank") + scale_y_reverse()

# convert plot to gtable
tt <- …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 gtable

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

ggplot2 在标记的刻度线之间显示未标记的刻度线

我一直在我的直方图上显示小刻度线的问题。我尝试了绘制未标记的主要刻度线的想法,但不会显示刻度线。我的代码非常繁琐,可能有一些多余的行。任何帮助,将不胜感激。

ggplot(data=Shrimp1, aes(Shrimp1$Carapace.Length))+
geom_histogram(breaks=seq(3.5, 25, by=0.1),
             col="black",
             fill="gray", 
             alpha=1)+ 

 labs(title="Total Female Carapace Length")+
 labs(x="Carapace Length (mm)", y="# of Shrimp")+
  xlim(c(3.5, 25))+
  theme_bw()+
scale_y_continuous(expand = c(0,0),
                     limits = c(0,200))+
scale_x_continuous(breaks=seq(2.5,25,2.5))+

theme(axis.text.x=element_text(size=30,angle=45,hjust=1))+
  theme(plot.title=element_text(size=30, hjust=0.5))+
  theme(axis.text=element_text(size=30, color = "black"), 
        axis.title=element_text(size=30,face="bold"))+
  theme(panel.grid.major=element_line(colour="white"), 
        panel.grid.minor = element_line(colour = "white"))+
  theme(panel.border=element_blank())+
  theme(axis.ticks.x = (element_line(size=2)), 
        axis.ticks.y=(element_line(size=2)))+
  theme(axis.ticks.length=unit(.55, "cm"))+
  theme(panel.border=element_blank(), axis.line.x=element_line(colour="black"),
        axis.line.y=element_line(colour="black"))
Run Code Online (Sandbox Code Playgroud)

存在主要刻度,但我需要它们之间以 0.1 的间隔进行次要刻度

1

r histogram ggplot2

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

ComplexHeatmap,无法创建水平图例

您好,我正在使用 ComplexHeatmap 包并遵循他们的小插图,但由于某种原因,我似乎无法强制图例变为水平。例如,这里是一个例子,

set.seed(123)
library(ComplexHeatmap)
mat = matrix(rnorm(80, 2), 8, 10)
mat = rbind(mat, matrix(rnorm(40, -2), 4, 10))
rownames(mat) = paste0("R", 1:12)
colnames(mat) = paste0("C", 1:10)

ha_column = HeatmapAnnotation(df = data.frame(type1 = c(rep("a", 5), rep("b", 5))),
                              col = list(type1 = c("a" =  "red", "b" = "blue")), 
                              annotation_legend_param = list(type1 = list( 
                                            title_gp = gpar(fontsize = 16), 
                                            legend_direction = "horizontal", labels_gp = gpar(fontsize = 8)))
                              )



ht1 = Heatmap(mat, name = "ht1", column_title = "Heatmap 1", top_annotation = ha_column)
draw(ht1, heatmap_legend_side …
Run Code Online (Sandbox Code Playgroud)

r complexheatmap

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

如何使用函数 usmap 更改 R 中的州或县标签大小?

我试图用标记的每个县来绘制新墨西哥州的地图,但标签大小总是比所需的大得多。这是我到目前为止使用的代码。

plot_usmap("counties", include=("NM"), labels=TRUE, label_color="red")
Run Code Online (Sandbox Code Playgroud)

我的地图最终看起来像这样:

地图

如何更改标签的大小以使其不重叠?我试过 size= 但这只是改变了寄宿生的大小。

谢谢您的帮助。

r usmap

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

dplyr 中 summarise() 函数的替代方法

food_consumption %>% 
   group_by(food_category) %>% 
   summarise(mod= lm(co2_emmission ~ consumption))
Run Code Online (Sandbox Code Playgroud)

运行此代码后,我收到以下错误

错误:列的mod长度必须为 1(汇总值),而不是 12

我怎样才能做到正确,并获得每个类别的回归结果?

r dplyr tidyverse

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

为R中的行值集群分配ID

我是R编程的新手(我一生都在SAS编程),我认为这是一个我无法找到答案的基本问题(找到了类似问题的答案,但没有找到答案).

想象一下,我们有一个二进制变量(我们称之为"v1"),它的值可以是0或1.我想创建一个新变量(我们称之为"v2"),它取值为每次出现1的新值或在0之后出现1s的字符串时,都会显示一个唯一的集群ID.最后,我想从v1创建"v2",如下所示:

Obs v1  v2
1   0   NA
2   0   NA
3   1   1
4   1   1
5   0   NA
6   1   2
7   0   NA
8   1   3
9   1   3
10  1   3
11  0   NA
12  1   4
Run Code Online (Sandbox Code Playgroud)

如果有人能够对此有所了解,我将非常感激.非常感谢.

r cluster-computing uniqueidentifier

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

如何在r中创建一个正态分布的矩阵?

我希望像素网格中填充正态分布的值,如下图所示

在此输入图像描述

有谁知道如何在R中这样做?

statistics r normal-distribution matrix

-7
推荐指数
1
解决办法
342
查看次数