我有一个大致如下所示的数据集:
names = tibble(NAME_2=c("Location1","Location2","Location3","Location4"))
dates = tibble(date = seq(as.Date("2015-01-01"), as.Date("2016-12-31"), by="days"))
types = tibble(type = c("comment","post"))
df <- merge(names,dates)
df <- merge(df, types)
zero <- seq(from=0, to=200, by=1)
df$n <- sample(zero, size=nrow(df), replace=TRUE)
Run Code Online (Sandbox Code Playgroud)
产生像这样的构面图:
ggplot(data = df, aes(x = date, y = n)) +
geom_line() +
facet_grid(type ~ NAME_2, scale = "free_y")
Run Code Online (Sandbox Code Playgroud)
是否有可能出现类似ncol=2in的行为,facet_wrap以便Location3和Location4出现在Location1和Location2下面?实际上,我大约有12个位置,这使得无法在一页上进行打印并且仍然清晰可辨。
给定以下内容:
import seaborn as sns
attend = sns.load_dataset("attention")
sns.set_style("whitegrid", {'axes.grid' : False,'axes.edgecolor':'none'})
g = sns.FacetGrid(attend, col="subject", col_wrap=5,
size=1.5, ylim=(0, 10))
ax = g.map(sns.pointplot, "solutions", "score", scale=.7)
Run Code Online (Sandbox Code Playgroud)
我想在每行上标记单个数据点(用值标签代替点)。在我仅通过MatPlotLib创建的另一个绘图中,这是这样完成的:
for i, text in enumerate(ind):
a.annotate(str(y[i])[:-2], xy=(ind[i], y[i]),fontsize=6, color=c,
bbox=dict(pad=.9,alpha=1, fc='white',color='none'),va='center', ha='center',weight='bold')
Run Code Online (Sandbox Code Playgroud)
但是,由于没有定义ind,所以我不确定这将如何工作。
我有一个脚本,用于生成带有多行条带文本的多面图。但这不再起作用了。下面是一个 MWE,应该从中解析条带文本,例如"bold(A)\nreally~long~extra":
一个
很长的额外
正如您通过调试功能看到的那样,第二行被切断了。我什至增加了利润,但无济于事......
任何想法是什么问题?
exmpl = data.frame(a = 1:100,
b = rep(1:5, 20),
f = factor(rep(LETTERS[1:5], each = 20))) %>%
as_tibble() %>%
mutate(f2 = paste0("bold(",f, ")\nreally~long~extra"))
ggplot(exmpl, aes(x = b, y = a)) +
facet_grid(. ~ f2, labeller = label_parsed) +
geom_point() +
theme(strip.text.x = element_text(size = 10, hjust = 0, margin = margin(.5, 0, .5, 0, "cm"), debug = T))
Run Code Online (Sandbox Code Playgroud)
当我们这样做时,我只是想出了这个解决方法,因为我之前使用的解决方案label_bquote()不再有效。请看看另一个问题,也许你也可以帮我解决这个问题?
我有一个个人特征的数据框,例如学校成绩,年龄,体重和身高。我想调查这些数据在海洋中的密度分布Facetgrid。
import pandas as pd
import seaborn as sns
import random
import matplotlib.pyplot as plt
# creation of artifical data
random.seed = 10
high = [random.uniform(3.0,6.0) for i in range(50)]
uni = [random.uniform(1.0, 4.0) for i in range(50)]
math = [random.uniform(1.0, 6.0) for i in range(50)]
bio = [random.uniform(1.0, 6.0) for i in range(50)]
history = [random.uniform(1.0, 6.0) for i in range(50)]
age = [random.randint(15,45) for i in range(50)]
height = [random.randint(150,210) for i in range(50)]
weight = …Run Code Online (Sandbox Code Playgroud) 我正在使用facet_grid 与ggplot 一起执行geom_point,但是我的facet 为空,并且我不知道如何删除它们或如何构建我的数据以不具有空facet?
这是我的数据的示例:
data = data.frame(
F1=c(0.69, 0.59, 0.6 , 0.52, 0.56, 0.58, 0.52, 0.53, 0.41, 0.57,
0.54, 0.38, 0.48, 0.31, 0.35,
0.43, 0.36, 0.38, 0.23, 0.48, 0.55, 0.48, 0.49, 0.46, 0.49,
0.52, 0.48, 0.48, 0.35, 0.5 ,
0.51, 0.58, 0.51, 0.59, 0.51, 0.57, 0.5 , 0.59, 0.47, 0.51,
0.61, 0.58, 0.61, 0.59, 0.61, 0.67, 0.6 , 0.59, 0.47, 0.61,
0.61, 0.52, 0.53, 0.60,0.62, 0.53, 0.62, 0.63, 0.24, 0.38),
F2 = c(0.01, 0.01, 0.02, 0.01, 0.01, 0.01, 0.01, …Run Code Online (Sandbox Code Playgroud) 我正在设置箱线图以在 ggplot2 中呈现这些内容facet_grid,并且我想增加内部边距。
不幸的是,我无法增加到面框的距离。
如何增加蓝色箭头所示的内边距(左和右)?
require(ggplot2)
dat <- rbind(data.frame(approach=1,product=1,value=seq(1,20,0.5)),
data.frame(approach=1,product=2,value=seq(5,15,0.3)),
data.frame(approach=1,product=3,value=seq(5,17,0.2)),
data.frame(approach=2,product=1,value=seq(1,13,0.3)),
data.frame(approach=2,product=2,value=seq(3,18,0.5)),
data.frame(approach=2,product=3,value=seq(4,25,0.7)),
data.frame(approach=3,product=1,value=seq(1,15,0.6)),
data.frame(approach=3,product=2,value=seq(3,16,0.5)),
data.frame(approach=3,product=3,value=seq(1,10,0.1)))
gg1 <- ggplot(dat, aes(group =product, y = value)) +
geom_boxplot() +
ylab("size (cm)")+
theme(panel.spacing = unit(0.1, 'lines')) +
theme(plot.background = element_rect(fill ="lightgrey" )) +
scale_fill_grey(start = 0.0, end = 1) +
theme_bw()+
xlab("") +
facet_grid(cols=vars(approach)) +
theme(axis.text.x = element_text(colour="black")) +
theme(axis.text.y=element_text(colour="black"))+
theme(panel.spacing=unit(0,"lines")) +
guides(fill=guide_legend(title="Products")) +
theme(plot.background = element_rect(fill ="lightgrey" ))
gg1
Run Code Online (Sandbox Code Playgroud)
另外,它对于离散尺度如何工作?
require(ggplot2)
dat <- rbind(data.frame(approach=1,product=1,value=seq(1,20,0.5)),
data.frame(approach=1,product=2,value=seq(5,15,0.3)),
data.frame(approach=1,product=3,value=seq(5,17,0.2)),
data.frame(approach=2,product=1,value=seq(1,13,0.3)),
data.frame(approach=2,product=2,value=seq(3,18,0.5)),
data.frame(approach=2,product=3,value=seq(4,25,0.7)), …Run Code Online (Sandbox Code Playgroud) 我有这样的代码,我想在 X 轴上添加刻度,这样我就可以更好地看到超过 150 的值对应的内容。我的 X 值的范围是从 178 到 17639。
bins = np.linspace(df.days_with_cr_line.min(), df.days_with_cr_line.max(), 32)
g = sns.FacetGrid(df, col="loan_status", hue="loan_status", palette=['#8856a7', '#f03b20'], col_wrap=2)
g.map(plt.hist, 'days_with_cr_line', bins=bins, ec="k")
Run Code Online (Sandbox Code Playgroud)
我努力了
g.set_xticks(np.arange(0,18000,500), minor=True)
AttributeError: 'FacetGrid' object has no attribute 'set_xticks'
Run Code Online (Sandbox Code Playgroud)
和
for axes in g.axes.flat:
_ = axes.set_xticks(axes.get_xticks(range(0,18000)))
Run Code Online (Sandbox Code Playgroud)
这将删除刻度标签而不添加任何刻度。
目标:我试图使用 Seaborn 在具有多个分组条形图的图中显示各个数据点。
问题:我尝试使用条形图的猫图和各个数据点的猫图来完成此操作。但是,这会生成 2 个数字:一个包含条形图,另一个包含各个数据点。
问题:有没有办法使用 Seaborn 在同一图中将各个数据点与条形图一起显示?
这是我的代码生成两个单独的数字:
import seaborn as sns
tips = sns.load_dataset("tips")
g = sns.catplot(
x="sex",
y="total_bill",
hue="smoker",
row="time",
data=tips,
kind="bar",
ci = "sd",
edgecolor="black",
errcolor="black",
errwidth=1.5,
capsize = 0.1,
height=4,
aspect=.7,
)
g = sns.catplot(
x="sex",
y="total_bill",
hue="smoker",
row="time",
data=tips,
kind="strip",
height=4,
aspect=.7,
)
Run Code Online (Sandbox Code Playgroud)
输出:
问题:有没有办法使用 Seaborn 在同一图中将各个数据点与条形图一起显示?
我有以下数据框:
ML Algorithm Option Coeff Lower Upper
1 Random Forest Algo_1 Opt_1 0.021 -0.124 0.166
2 Lasso Algo_1 Opt_1 0.130 -0.012 0.273
3 XGBoost Algo_1 Opt_1 -0.052 -0.211 0.108
4 Neural Net Algo_1 Opt_1 0.114 -0.009 0.238
5 Random Forest Algo_1 Opt_2 0.116 -0.033 0.264
6 Lasso Algo_1 Opt_2 0.158 0.019 0.297
7 XGBoost Algo_1 Opt_2 -0.260 -0.508 -0.012
8 Neural Net Algo_1 Opt_2 0.035 -0.100 0.170
9 Random Forest Algo_2 Opt_1 0.028 -0.117 0.172
10 Lasso Algo_2 Opt_1 0.134 …Run Code Online (Sandbox Code Playgroud) 我有一组由多面包裹的情节表达的 barplots ,每个都有一个标题。如何将每个子图的标题与其绘图窗口的左侧左对齐?

import lorem
import plotly.express as px
import numpy as np
import random
items = np.repeat([lorem.sentence() for i in range(10)], 5)
response = list(range(1,6)) * 10
n = [random.randint(0, 10) for i in range(50)]
(
px.bar(x=response, y=n, facet_col=items, facet_col_wrap=4, height=1300)
.for_each_annotation(lambda a: a.update(text=a.text.split("=")[-1]))
.for_each_xaxis(lambda xaxis: xaxis.update(showticklabels=True))
.for_each_yaxis(lambda yaxis: yaxis.update(showticklabels=True))
.show()
)
Run Code Online (Sandbox Code Playgroud)
我尝试添加,.for_each_annotation(lambda a: a.update(text=a.text.split("=")[-1], x=0))但结果是:
