我试图在python中使用seaborn生成多面板图,我希望我的多面板图中的点的颜色由连续变量指定.以下是我尝试使用"iris"数据集的示例:
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib as mpl
import matplotlib.pyplot as plt
iris = sns.load_dataset('iris')
g = sns.FacetGrid(iris, col = 'species', hue = 'petal_length', palette = 'seismic')
g = g.map(plt.scatter, 'sepal_length', 'sepal_width', s = 100, alpha = 0.5)
g.add_legend()
Run Code Online (Sandbox Code Playgroud)
这很好,但传说太长了.我想像这些值的1/4一样(理想情况下)或禁止显示颜色条.例如,这样的事情可能是可以接受的,但我仍然想把它分成三个物种.
plt.scatter(iris.sepal_length, iris.sepal_width, alpha = .8, c = iris.petal_length, cmap = 'seismic')
cbar = plt.colorbar()
Run Code Online (Sandbox Code Playgroud)
关于如何充分利用这两个情节的任何想法?
编辑:这个主题似乎是一个好的开始.
https://github.com/mwaskom/seaborn/issues/582
不知何故,对于这个用户,只需在其他所有运行之后附加plt.colorbar似乎以某种方式工作.但在这种情况下似乎没有帮助.
我有一个数据框架,其中有一堆嵌套的数据框架,我想将dplyr :: select应用于每个嵌套的数据框架。这是一个例子
library(tidyverse)
mtcars %>%
group_by(cyl) %>%
nest %>%
mutate(data2 = ~map(data, dplyr::select(.,-mpg)))
Run Code Online (Sandbox Code Playgroud)
我认为这将导致一个包含三列的数据框。cyl:柱面数,data:嵌套数据,data2:与数据相同,除了每个元素没有mpg列。
而是R崩溃:
Run Code Online (Sandbox Code Playgroud)*** caught segfault *** address 0x7ffc1e445000, cause 'memory not mapped' Traceback: 1: .Call(`_dplyr_mutate_impl`, df, dots) 2: mutate_impl(.data, dots) 3: mutate.tbl_df(., data2 = ~map(data, dplyr::select(., -mpg))) 4: mutate(., data2 = ~map(data, dplyr::select(., -mpg))) 5: function_list[[k]](value) 6: withVisible(function_list[[k]](value)) 7: freduce(value, `_function_list`) 8: `_fseq`(`_lhs`) 9: eval(quote(`_fseq`(`_lhs`)), env, env) 10: eval(quote(`_fseq`(`_lhs`)), env, env) 11: withVisible(eval(quote(`_fseq`(`_lhs`)), env, env)) 12: mtcars %>% group_by(cyl) %>% …
我在 r-markdown 中写了一个方程,如下所示
$$ 2 \frac{meter}{day} * 3 ~ days $$
Run Code Online (Sandbox Code Playgroud)
我想days通过删除它们来表明取消。您通常可以通过以下方式删除 r-markdown 中的文本~~surrounding the text in tildaes~~
然而,表达式中的代字号似乎只插入空格。
$$ 2 \frac{meter}{~~day~~} * 3 ~ ~~days~~ $$
我也尝试过乳胶
$$ 2 \frac{meter}{sout{day}} * 3 ~ days $$
但这似乎也不起作用。
是否有任何选项可以删除在 r-markdown 方程中起作用的方程部分?
我在 python 中使用 ggplot,只是想制作一个基本的条形图。由于我不明白的原因,条形高度对应于变量名称的计数,而不是实际变量。
简单的例子
pattern = pd.Series(['standard', 'woolly', 'brown', 'spotted', 'red', 'wheat', 'grey'], dtype = 'category')
population = pd.Series([12, 2, 7, 3, 2, 4,5])
patternCount = pd.DataFrame({'color':pattern, 'population':population})
ggplot(aes(x = 'attribute', y = 'population'), data = animalCounts) +\
geom_bar(stat = "identity")
Run Code Online (Sandbox Code Playgroud)
我知道这些是计数,而不仅仅是数字,因为如果我有这些名称中的任何一个重复,该变量将显示为“2”。
我想我在这里犯了一些非常简单的错误。谢谢你的帮助。
编辑:根据罗恩诺里斯的要求,这里是相同的数字,但缩放到 12,而不是 1。
我在获取geom_rug将某些数据绘制到现有绘图中时遇到麻烦。这是一个示例图,在这里我将某天的访问量与某些度量的大小进行比较。
test <- data.frame(
visit = rep(c(0, 1.5, 3.5, 6.5, 12), 5),
mag = rnorm(n = 25)
)
ggplot(test, aes(x = visit, y = mag)) + geom_point()
Run Code Online (Sandbox Code Playgroud)
我还有其他一些数据,我想在x轴上添加额外的标记。
vac <- data.frame(
visit = c(2, 4, 6, 8)
)
Run Code Online (Sandbox Code Playgroud)
由于我不理解的原因,当我运行以下代码时,我什么都没有。
ggplot(test, aes(x = visit, y = mag)) + geom_point() +
geom_rug(data=vac, aes(x = visit))
Run Code Online (Sandbox Code Playgroud)
我想我已经以某种方式搞砸了语法,但是我似乎无法弄清楚我在这里做错了什么。有什么建议么?
让我们说,在R中,我有一个数据框字母,数字和动物,我想以图形方式检查这三者之间的关系.我可以做点什么.
library(dplyr)
library(ggplot2)
library(gridExtra)
set.seed(33)
my_df <- data.frame(
letters = c(letters[1:10], letters[6:15], letters[11:20]),
animals = c(rep('sheep', 10), rep('cow', 10), rep('horse', 10)),
numbers = rnorm(1:30)
)
ggplot(my_df, aes(x = letters, y = numbers)) + geom_point() +
facet_wrap(~animals, ncol = 1, scales = 'free_x')
Run Code Online (Sandbox Code Playgroud)
但是,我希望x轴的顺序取决于y轴的顺序.根据这个例子,这很容易做到没有方面.我甚至可以为每只动物制作一个有序的图形,然后用grid.arrange将它们绑定在一起,如本例所示
my_df_shp <- my_df %>% filter(animals == 'sheep')
my_df_cow <- my_df %>% filter(animals == 'cow')
my_df_horse <- my_df %>% filter(animals == 'horse')
my_df_shp1 <- my_df_shp %>% mutate(letters = reorder(letters, numbers))
my_df_cow1 <- my_df_cow %>% …Run Code Online (Sandbox Code Playgroud) 我有一个R数据框,其中有一列数据框,我想将每列数据打印到一个文件中:
df0 <- tibble(x = 1:3, y = rnorm(3))
df1 <- tibble(x = 1:3, y = rnorm(3))
df2 <- tibble(x = 1:3, y = rnorm(3))
animalFrames <- tibble(animals = c('sheep', 'cow', 'horse'),
frames = list(df0, df1, df2))
Run Code Online (Sandbox Code Playgroud)
我可以使用for循环来做到这一点:
for (i in 1:dim(animalFrames)[1]){
write.csv(animalFrames[i,2][[1]], file = paste0('test_', animalFrames[i,1], '.csv'))
}
Run Code Online (Sandbox Code Playgroud)
或具有purrr的walk2功能:
walk2(animalFrames$animals, animalFrames$frames, ~write.csv(.y, file
= paste0('test_', .x, '.csv')))
Run Code Online (Sandbox Code Playgroud)
有什么方法可以将此游走功能放在magrittr管道的末端?
我在想类似的东西:
animalFrames %>% do({walk2(.$animals, .$frames, ~write.csv(.y, file = paste0('test_', .x, '.csv')))})
Run Code Online (Sandbox Code Playgroud)
但这给我一个错误:
Run Code Online (Sandbox Code Playgroud)Error: Result must …
我有一个数据框,其中一列包含更多数据框。其中一个数据框缺少一列。我想从其他两个数据框中删除该列(如果存在)。
\n\n这是一个例子:
\n\nlibrary(tidyverse)\n\nmtcars %>%\ngroup_by(cyl) %>%\nnest -> tmp\ntmp[3,'data'][[1]][[1]] <- dplyr::select(tmp[3,'data'][[1]][[1]], -mpg)\n\nprint(tmp)\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n\nRun Code Online (Sandbox Code Playgroud)\n# A tibble: 3 x 2\n cyl data \n <dbl> <list> \n1 6. <tibble [7 \xc3\x97 10]> \n2 4. <tibble [11 \xc3\x97 10]>\n3 8. <tibble [14 \xc3\x97 9]>\n
因此,在这里,该data列包含三个小标题,其中最后一个不包含该列mpg。我可以在数据列上映射 dplyr::select ,并通过返回捕获错误NA如下所示:
tmp %>% mutate(data2 = map(data, possibly(~dplyr::select(.,-mpg), otherwise = NA)))\nRun Code Online (Sandbox Code Playgroud)\n\n\nRun Code Online (Sandbox Code Playgroud)# A tibble: 3 x 3\n cyl data data2 \n <dbl> <list> <list> \n1 6. …
我想使用该annotate()函数将以下等式放入R中的ggplot中.
我似乎能够到目前为止最接近的是以下内容
ggplot()+ annotate("label", x = 1, y = 1, label = "APC == 0.50 ~ Depth ^ {-0.99} * (Cone == 0~Net == 1) ^ {0.59}", parse = TRUE, size = 5)
Run Code Online (Sandbox Code Playgroud)
这很好,但能够从等式中添加*和|符号会很好.我尝试了以下方法:
ggplot()+ annotate("label", x = 1, y = 1, label = "APC == 0.50 * Depth ^ {-0.99} * (Cone == 0|Net == 1) ^ {0.59}", parse = TRUE, size = 5)
Run Code Online (Sandbox Code Playgroud)
但它最终看起来很奇怪
关于如何添加or和星形符号的任何建议?
如果有人可以向我解释|当我尝试使用符号时实际发生了什么,为什么它出现在它的位置并添加括号和逗号?
我有一堆公式,作为字符串,我想在 glm 中一次使用一个,最好使用 tidyverse 函数。这就是我现在所在的地方。
library(tidyverse)
library(broom)
mtcars %>% dplyr::select(mpg:qsec) %>% colnames -> targcols
paste('vs ~ ', targcols) -> formulas
formulas
#> 'vs ~ mpg' 'vs ~ cyl' 'vs ~ disp' 'vs ~ hp' 'vs ~ drat' 'vs ~ wt' 'vs ~ qsec'
Run Code Online (Sandbox Code Playgroud)
我可以使用这些公式中的任何一个来运行一般线性模型:
glm(as.formula(formulas[1]), family = 'binomial', data = mtcars) %>% glance
#> null.deviance, df.null, logLik, AIC, BIC, deviance, df.residual
#> 43.86011, 31, -12.76667, 29.53334, 32.46481, 25.53334, 30
Run Code Online (Sandbox Code Playgroud)
我想用列表中的每个可能的公式运行 glm 。我尝试这样做,如下所示。
data.frame(formulas = formulas) %>%
mutate(mod = map(formulas, function(fs){ …Run Code Online (Sandbox Code Playgroud) r ×8
purrr ×4
ggplot2 ×3
python ×2
dplyr ×1
equation ×1
matplotlib ×1
pandas ×1
python-3.x ×1
r-markdown ×1
seaborn ×1