我使用 pima 数据集来可视化x轴上的预测变量 triceps 与三个响应变量中的每一个之间的线性关系:怀孕在单独的图中,y轴上的em>,葡萄糖,压力。
这是我的代码:
from itertools import permutations
my_list=[[9, 10, 1], [1, 7, 5, 6, 11], [0, 4], [4, 2, 9]]
def sortCheck(a):
if a[0][0] != 0:
return False
for i in range(0, len(a) - 1):
if a[i][-1] != a[i+1][0]:
return False
return True
result_list = []
for permutation in permutations(my_list):
if sortCheck(permutation):
result_list.append(list(permutation))
不幸的是,代码重复了三次,具有不同的功能。如果我想针对x(三头肌)绘制所有功能,我将不得不一直复制和粘贴相同的代码,只需更改功能。有没有更简单的方法呢?
答案 0 :(得分:2)
你确定可以。使用facet_wrap
。棘手的部分是从宽到长格式获取您想要的数据。对于您的情况,我使用了gather
。
library(pdp)
library(ggplot2)
library(tidyr)
pima$id <- 1:nrow(pima)
xy <- pima[, c("triceps", "pregnant", "glucose", "pressure", "id")]
xy <- gather(xy, key = state, value = value, glucose, pregnant, pressure, -id, -triceps)
ggplot(xy, aes(x = value, y = triceps)) +
theme_bw() +
geom_point() +
geom_smooth(method = "lm", se = FALSE) +
facet_wrap(~ state, scales = "free_x", ncol = 2)
答案 1 :(得分:1)
我认为你在变量之间混淆了。在内容中,您在x轴中使用三头肌,但在图中,您将其放在y轴上。如果您想在x轴上绘制三头肌,在y轴上绘制孕,葡萄糖,压力,此代码将帮助您:
library(pdp)
library(ggplot2)
pima=na.omit(pima)
head(pima)
pima %>%
select(pregnant, glucose, pressure, triceps) %>%
melt(id.vars = "triceps") %>%
ggplot(aes(x = triceps, y = value)) + geom_point() +
geom_smooth(method = "lm") +
facet_grid(~variable, scales = "free_x")