小编Esm*_*me_的帖子

用于计算R中的R2(R平方)的函数

我有一个带有观察和建模数据的数据框,我想计算R2值.我希望有一个我可以为此调用的函数,但找不到它.我知道我可以写自己的并应用它,但我错过了一些明显的东西吗?我想要类似的东西

obs <- 1:5
mod <- c(0.8,2.4,2,3,4.8)
df <- data.frame(obs, mod)

R2 <- rsq(df)
# 0.85
Run Code Online (Sandbox Code Playgroud)

statistics r function

16
推荐指数
6
解决办法
7万
查看次数

在数据帧中查找前n行的总和

我想n在数据帧中找到前一行的总和.例如:

id = 1:10
vals = c(4,7,2,9,7,0,4,6,1,8)
test = data.frame(id,vals)
Run Code Online (Sandbox Code Playgroud)

因此,n=3我想将下一列计算为:

test$sum = c(NA, NA, 13,18,18,16,11,10,11,15)
Run Code Online (Sandbox Code Playgroud)

我最接近的是使用以下方法创建一个新列:

test$valprevious = c(NA, head(test$vals,-1)
Run Code Online (Sandbox Code Playgroud)

然后使用循环重复此次n,然后sum跨列.我确定这不是最有效的方法,是否有任何函数可以访问n前面的行?或者另一种方法呢?

r dataframe

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

在 Patchwork 中手动定位图例

我想将图例(所有绘图共有)放置在拼凑布局的空白区域中。legend.position从我在网上可以找到的情况来看,如果我也使用的话,我无法手动定位图例guides="collect"(但可以使用左、右等)。

我尝试过使用l <- get.legendthen+ inset_element(l, 0.6, 0.6, 1, 1)但它不明白l。我也尝试过混入,+ inset_element(gridExtra::tableGrob(l))但没有运气。

我的目标是将图例放在空白处。我的实际拼凑图更复杂,但有两个空白空间,我希望图例位于其中。

微量元素

library(patchwork)    
library(ggplot2)
p1 <- ggplot(mtcars) + 
  geom_point(aes(mpg, disp, color = mpg)) + 
  ggtitle('Plot 1')

p2 <- ggplot(mtcars) + 
  geom_boxplot(aes(gear, disp, group = gear)) + 
  ggtitle('Plot 2')

p3 <- ggplot(mtcars) + 
  geom_point(aes(hp, wt, colour = mpg)) + 
  ggtitle('Plot 3')    

design <- "
1111
223#
"    
p1 + p2 + p3  + plot_layout(guides = 'collect') + plot_layout(design=design, guides …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 patchwork

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

Matplotlib 条形图 - 类似于堆叠的叠加条

我想创建一个 matplotlib 条形图,它具有堆叠图的外观,而不是从多索引 Pandas 数据框中添加的。

下面的代码给出了基本的行为

%matplotlib notebook
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import io

data = io.StringIO('''Fruit,Color,Price
Apple,Red,1.5
Apple,Green,1.0
Pear,Red,2.5
Pear,Green,2.3
Lime,Green,0.5
Lime, Red, 3.0
''')
df_unindexed = pd.read_csv(data)
df_unindexed
df = df_unindexed.set_index(['Fruit', 'Color'])
df.unstack().plot(kind='bar')
Run Code Online (Sandbox Code Playgroud)

plot 命令df.unstack().plot(kind='bar')显示所有彼此相邻分组的苹果价格。如果您选择该选项df.unstack().plot(kind='bar',stacked=True)- 它会将红色和绿色的价格加在一起并将它们堆叠起来。

我想要一个介于两者之间的图 - 它将每个组显示为一个条形,但覆盖了值,以便您可以看到它们。下图(在 powerpoint 中完成)显示了我正在寻找的行为 -> 我想要右侧的图像。

没有计算所有值然后使用堆叠选项,这可能吗?

示例条形图

python matplotlib bar-chart pandas stacked-chart

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

python matplotlib直方图为不同的条指定不同的颜色

我想根据直方图中的条形为不同的条形着色。例如,在下面的示例中,我希望前3个小节为蓝色,接下来的2个小节为红色,其余为黑色(实际的小节和颜色由代码的其他部分确定)。

我可以使用color选项更改所有条形的颜色,但是我希望能够提供所用颜色的列表。

import numpy as np
import matplotlib.pyplot as plt

data = np.random.rand(1000)
plt.hist(data,color = 'r')
Run Code Online (Sandbox Code Playgroud)

python matplotlib histogram

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

Pandas 使用列表向列添加二级索引

我有一个带有列标题的数据框(以及我的真实数据多级行索引)。我想根据我拥有的列表向列添加二级索引。

import pandas as pd

data = {"apple": [7,5,6,4,7,5,8,6],
       "strawberry": [3,5,2,1,3,0,4,2],
       "banana": [1,2,1,2,2,2,1,3],
        "chocolate" : [5,8,4,2,1,6,4,5],
        "cake":[4,4,5,1,3,0,0,3]
       }

df = pd.DataFrame(data)
food_cat = ["fv","fv","fv","j","j"]
Run Code Online (Sandbox Code Playgroud)

我想要看起来像这样的东西:

所需输出示例

我尝试使用如何通过匹配字典值将第二级列标题/索引添加到数据帧?- 但是无法让它工作(而且并不理想,因为我需要弄清楚如何自动化字典,而我没有)。

我还尝试将列表添加为数据框中的一行,并将该行转换为二级索引,如本答案中使用

df.loc[len(df)] = food_cat
df = pd.MultiIndex.from_arrays(df.columns, df.iloc[len(df)-1])
Run Code Online (Sandbox Code Playgroud)

但收到错误 检查所有数组的长度是否相等,类型错误:输入必须是类似数组的列表/序列。

我也尝试使用df = pd.MultiIndex.from_arrays(df.columns, np.array(food_cat))withimport numpy as np但遇到了同样的错误。

我觉得这应该是一个简单的任务(它是针对行的),并且提出了很多问题,但我正在努力寻找可以复制的东西来适应我的数据。

python multi-index pandas

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

R corrplot中的标题也没有居中和太高

我正在使用corrplot来显示相关性,但是标题在情节之上非常高,我想把它拉得更近.我该怎么做呢?

示例数据帧:

"VADeaths" <-
  structure(c(11.7, 18.1, 26.9, 41, 66, 8.7, 11.7, 20.3, 30.9, 54.3, 15.4, 
  24.3, 37, 54.6, 71.1, 8.4, 13.6, 19.3, 35.1, 50), .Dim = c(5, 4),
  .Dimnames = list(c("50-54", "55-59", "60-64", "65-69", "70-74"),
  c("Rural Male", "Rural Female", "Urban Male", "Urban Female")))
Run Code Online (Sandbox Code Playgroud)

计算相关性并可视化

library(corrplot)
cors = cor(VADeaths)

corrplot(cors,tl.col="black",title="Example Plot",mar=c(0,0,5,0),tl.offset = 1)
Run Code Online (Sandbox Code Playgroud)

通过将边距扩展到图表上方的5,我至少可以使标题出现在图中,但无法弄清楚如何使标题更接近图并以图表为中心而不是标签占用的空间.

以上看起来像这样:

我想要更像这样的东西(忽略字体)

我的实际情节标签要小得多,因此标签与标题之间的间隙约为3-4厘米.我没有发现增加mar的价值解决了这个问题.

r r-corrplot

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