小编Chr*_*ris的帖子

ggplot2 +世界地图=旧数据?

我正在尝试使用ggplot2绘制世界地图.这是我到目前为止:

library(ggplot2)
world <- map_data("world")
ggplot(aes(long, lat, group=group), data=world) + geom_polygon()
Run Code Online (Sandbox Code Playgroud)

这很好用,很容易做到.不幸的是,世界地图数据似乎很旧.例如,新加坡和捷克共和国等国家失踪,而且还有像苏联这样的地区.知道如何获得更新的世界地图数据吗?

sort( unique(world$region) )
  [1] "Afghanistan"              "Albania"                  "Algeria"                 
  [4] "American Samoa"           "Andaman Islands"          "Andorra"                 
  [7] "Angola"                   "Anguilla"                 "Antarctica"              
 [10] "Antigua"                  "Aral Sea"                 "Argentina"               
 [13] "Aruba"                    "Australia"                "Austria"                 
 [16] "Azores"                   "Bahamas"                  "Bahrain"                 
 [19] "Bangladesh"               "Barbados"                 "Barbuda"                 
 [22] "Belgium"                  "Belize"                   "Benin"                   
 [25] "Bhutan"                   "Black Sea"                "Bolivia"                 
 [28] "Bonaire"                  "Botswana"                 "Brazil"                  
 [31] "Brunei"                   "Bulgaria"                 "Burkina Faso"            
 [34] "Burundi"                  "California"               "Cambodia"                
 [37] "Cameroon"                 "Canada"                   "Canary Islands"          
 [40] "Cape Verde"               "Caspian Sea"              "Cayman Islands" …

r ggplot2

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

ggplot2:修复因子级别的颜色

我正在开发一个更大的项目,我正在ggplot2中创建几个图.这些图涉及绘制几个不同类别的几种不同结果(想想:国家,物种,类型).我想完全修复离散类型到颜色的映射,使得Type = A始终显示为红色,Type = B始终显示为蓝色,依此类推所有绘图,而不管其他因素是什么.我知道scale_fill_manual()我可以在哪里手动提供颜色值,然后使用drop = FALSE它有助于处理未使用的因子水平.但是,我发现这非常麻烦,因为每个绘图都需要一些手动工作来处理以正确方式排序因子,排序颜色值以匹配因子排序,丢弃未使用的级别等.

我正在寻找的是一种方式,我可以映射一次和全局因素水平到特定的颜色(A =绿色,B =蓝色,C =红色,......)然后只是绘制任何我喜欢的绘图和ggplot挑选正确的颜色.

这里有一些代码来说明这一点.

# Full set with 4 categories
df1 <- data.frame(Value = c(40, 20, 10, 60), 
                  Type = c("A", "B", "C", "D"))

ggplot(df1, aes(x = Type, y = Value, fill = Type)) + geom_bar(stat = "identity")


# Colors change complete because only 3 factor levels are present
df2 <- data.frame(Value = c(40, 20, 60), 
                  Type = c("A", "B", "D"))

ggplot(df2, aes(x = Type, y …
Run Code Online (Sandbox Code Playgroud)

r colors ggplot2

12
推荐指数
3
解决办法
8557
查看次数

R将<key,val>对转换为data.frame

在R中,我有两个对的向量,如下所示:

x <- c("A=5", "B=1",        "D=1", "E=1", "F=2", "G=1")
y <- c("A=2", "B=1", "C=3", "D=1",                     "H=4")
Run Code Online (Sandbox Code Playgroud)

我想将其转换为data.frame,如下所示:

  A B C D E F G H
x 5 1 0 1 1 2 1 0
y 2 1 3 1 0 0 0 4
Run Code Online (Sandbox Code Playgroud)

包含在x或y中的所有键都应构成列,未出现在x或y中的键应添加值为零.

r vector dataframe

7
推荐指数
3
解决办法
1868
查看次数

R计算具有奇点的lm模型的鲁棒标准误差(vcovHC)

在R中,当一些系数由于奇点而被丢弃时,如何使用vcovHC()计算稳健的标准误差?标准的lm函数似乎可以很好地计算实际估计的所有系数的正常标准误差,但vcovHC()会抛出一个错误:"面包错误.%*%肉.:不一致的参数".

(我使用的实际数据有点复杂.事实上,它是一个使用两种不同固定效果的模型,我遇到局部奇点,我不能简单地摆脱它.至少我不知道如何.对于两个固定效应我使用第一个因子有150个级别,第二个有142个级别,总共有九个奇点,这是因为数据是在十个块中收集的.)

这是我的输出:

Call:
lm(formula = one ~ two + three + Jan + Feb + Mar + Apr + May + 
Jun + Jul + Aug + Sep + Oct + Nov + Dec, data = dat)

Residuals:
    Min      1Q  Median      3Q     Max 
-130.12  -60.95    0.08   61.05  137.35 

Coefficients: (1 not defined because of singularities)
              Estimate Std. Error t value Pr(>|t|)    
(Intercept) 1169.74313   57.36807  20.390   <2e-16 ***
two           -0.07963    0.06720  -1.185    0.237    
three         -0.04053    0.06686  -0.606    0.545    
Jan            8.10336 …
Run Code Online (Sandbox Code Playgroud)

regression r lm

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

如何稳健地写入缓慢且不可靠的 NFS

我不是 C 方面的专家,我正在寻找一些建议来使我的程序更加健壮和可靠。只是为了提供一些背景信息:我编写了一个程序来执行一些科学计算,该程序需要相当长的时间(大约 20 小时),我正在使用 SLRUM 调度系统和 NFS 安装的文件系统在大型大学 HPC Linux 集群上执行。似乎发生的情况是,在 20 小时内的某个时间,与文件系统的连接变得陈旧(在整个计算机上;独立于我的程序),并且第一次尝试打开和写入文件需要很长时间,这会导致segfault cored dumped 错误,到目前为止我还无法精确追踪。下面是一个最小文件,至少在概念上重现了该错误:程序启动,打开一个文件,一切正常。该程序进行了一些长时间的计算(由 sleep() 模拟),尝试再次打开并写入同一文件,但失败了。有哪些约定可以使我的代码更加健壮并可靠地将结果写入文件而不会崩溃?

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(int argc, char **argv) {
    // Declare variables
    FILE *outfile;
    char outname[150] = "result.csv";

    // Open file for writing
    printf("CHECKING if output file '%s' is writable?", outname);
    outfile=fopen(outname, "w");
    if (outfile == NULL) {
        perror("Failed: ");
        exit(EXIT_FAILURE);
    }
    fclose(outfile);
    printf(" PASSED.\n");

    // Do some computation that takes really long (around 19h)
    sleep(3);

    // Open …
Run Code Online (Sandbox Code Playgroud)

c linux nfs file

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

R图:在左上角的空白处打印文本

我有以下基本代码来绘制网格。

grid <- expand.grid( pi=seq(50, 95, 5) / 100, mu2=seq(5, .5, -.5) )
pi <- seq(44, 100, .5) / 100
par( mai=c(.05, .05, .05, .05), oma=c(2.9, 2.9, 0, 0) ) # Make room for label
plot( grid, cex=.5, xlab="", ylab="", cex.axis=.7 )
Run Code Online (Sandbox Code Playgroud)

如红色圆圈所示,如何在左上角绘制文本标签,例如“(A)”?

编辑:“(A)”应按规则的,即水平的阅读方向打印;不垂直于y轴。

在此处输入图片说明

plot r

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

标签 统计

r ×5

ggplot2 ×2

c ×1

colors ×1

dataframe ×1

file ×1

linux ×1

lm ×1

nfs ×1

plot ×1

regression ×1

vector ×1