小编chu*_*271的帖子

在ggvis中的图表下方添加一个水平离散图例

我想在ggvis图表下方制作一个水平图例.我可以使用图例属性将其放置在图表下方,但不知道如何使图标在图例标题下方水平.以下是可重复的最低代码(从网上抓取).

df1 = data.frame(x=sample(1:10), y=sample(1:10))
df2 = data.frame(x=1:10, y=1:10)
df3 = data.frame(x=1:10, y=sqrt(1:10))

df2$id <- 1
df3$id <- 2
df4    <- rbind(df2,df3)
df4$id <- factor(df4$id)

df4 %>% ggvis(x=~x, y=~y, stroke=~id) %>% layer_lines() %>%
    # make sure you use add relative scales
    add_relative_scales() %>%
    # values for x and y need to be between 0 and 1
    # e.g for the x-axis 0 is the at far-most left point and 1 at the far-right 
    add_legend("stroke", title="Cylinders",
               properties=legend_props(
                   legend=list(
                       x=scaled_value("x_rel", …
Run Code Online (Sandbox Code Playgroud)

plot r legend-properties ggvis

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

在dplyr和mutate中使用strsplit和subset

我有一个包含一个字符串列的数据表.我想使用strsplit创建另一列作为此列的子集.

dat <- data.table(labels=c('a_1','b_2','c_3','d_4'))
Run Code Online (Sandbox Code Playgroud)

我想要的输出是

label  sub_label
a_1    a
b_2    b
c_3    c
d_4    d 
Run Code Online (Sandbox Code Playgroud)

我尝试过以下但似乎都没有效果.

dat %>%
    mutate(
        sub_labels=strsplit(as.character(labels), "_")[[1]][1]
    ) 
# gives a column whose values are all "a"
Run Code Online (Sandbox Code Playgroud)

这个对我来说合乎逻辑,

dat %>%
    mutate(
        sub_labels=sapply(strsplit(as.character(labels), "_"), function(x) x[[1]][1])
    )
Run Code Online (Sandbox Code Playgroud)

给出错误

错误:不知道如何处理类型的pairlist

我看到另一个文章,其中strsplit的输出上的粘贴崩溃工作,所以我不明白为什么匿名函数中的子集正在给出问题.感谢您对此的任何澄清.

r strsplit dplyr

9
推荐指数
4
解决办法
8020
查看次数

python pandas min()没有达到最低限度

我遇到了一个奇怪的问题.我确信这背后有合理的理由.

我有一个名为alloptions的数据框,它有4列,minage1,minage2,minage3和minage4,它们都是float64.缺失值的数量从minage1增加到minage4.

我创建了第五列,它采用这四列中的最小列:

alloptions['minage']=alloptions.apply(lambda x: min([x['minage1'],x['minage2'],x['minage3'],x['minage4']]),axis=1)
Run Code Online (Sandbox Code Playgroud)

看起来它有效,直到我在第47行发现

     minage1    minage2 minage3 minage4 minage      
47     NaN      56.0    NaN      NaN     NaN
Run Code Online (Sandbox Code Playgroud)

使用.loc,我隔离了那行:

In [10]:

 print alloptions.loc[47,:]
 print alloptions.loc[47,:].dtypes
Run Code Online (Sandbox Code Playgroud)

我明白了

minage1   NaN
minage2    56
minage3   NaN
minage4   NaN
minage    NaN
Name: 47, dtype: float64
float64
Run Code Online (Sandbox Code Playgroud)

所以我很困惑为什么功能没有拿起56.

预先感谢您的帮助.

python pandas

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

标签 统计

r ×2

dplyr ×1

ggvis ×1

legend-properties ×1

pandas ×1

plot ×1

python ×1

strsplit ×1