在 matplotlib 的文档中boxplot我们可以读到:
Whiskerprops : dict 或 None (默认)如果提供,将设置胡须的绘图样式
好的,所以我通过了一个指令来在胡须上设置一些视觉样式:
whiskerprops = {'ls': 'solid', 'lw': 0.5, 'color': '#777777'}
boxplot(..., whiskerprops = whiskerprops)
Run Code Online (Sandbox Code Playgroud)
除了 之外,这些设置没有任何影响color。
在其他 prop 上也可以观察到相同的行为:capprops、medianprops、boxprops等。
后来我找到了原因,我会在答案中发布。我这样做只是因为其他人可能面临同样的问题,并且文档和教程没有回答这个问题。
我在 python panda DataFrame 中有以下数据。我想要类似于https://stanford.edu/~mwaskom/software/seaborn/examples/grouped_boxplot.html中的分组箱线图
对于每个 id,我希望并排绘制两个箱形图。我该如何实现这一目标。我尝试用 seaborn 包绘制它,但没有成功。
id predicted real
1 [10, 10, 10] [16, 18, 20]
2 [12, 12, 15] [15, 17, 19, 21, 23]
3 [20, 5, 4, 4] [29, 32]
4 [25, 25, 25, 24, 21] [21, 24, 25, 26, 28, 29, 30, 33]
5 [20, 20, 20, 21] [21, 22, 24, 26, 28, 30, 31, 32]
6 [8, 3, 3, 14] [25, 27]
7 [1, 4, 4, 4, 5, 6, 10] [69, 71, …Run Code Online (Sandbox Code Playgroud) 我使用以下代码:
data(mtcars)
ggplot(mtcars, aes(x=factor(cyl), y=mpg)) +
geom_jitter(aes(colour=factor(gear)), width = 0.1) +
geom_boxplot(aes(fill=factor(gear)), alpha=0.6)
Run Code Online (Sandbox Code Playgroud)
但我想要来自 geom_jitter 的彩色点直接位于相应的(!)箱线图后面。有办法做到吗?
我想创建数据箱线图进行比较,我的图看起来像

我怎样才能添加颜色

尽管网上有关于并排绘制箱线图的很好的例子。通过我的数据在两个不同的 pandas DataFrame 中设置的方式,并且已经有了总和子图,我无法管理使我的箱线图彼此相邻而不是重叠。
我的代码如下:
import matplotlib as mpl
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
mpl.use('agg')
fig, axarr = plt.subplots(3,sharex=True,sharey=True,figsize=(9,6))
month = ['jan','feb','mar','apr','may','jun','jul','aug','sep','oct','nov','dec']
percentiles = [90,95,98]
nr = 0
for p in percentiles:
future_data = pd.DataFrame(np.random.randint(0,30,size=(30,12)),columns = month)
present_data = pd.DataFrame(np.random.randint(0,30,size=(30,12)),columns = month)
Future = future_data.as_matrix()
Present = present_data.as_matrix()
pp = axarr[nr].boxplot(Present,patch_artist=True, showfliers=False)
fp = axarr[nr].boxplot(Future, patch_artist=True, showfliers=False)
nr += 1
Run Code Online (Sandbox Code Playgroud)
结果如下所示: 重叠箱线图
您能帮我看看如何确保这些盒子彼此相邻,以便我可以比较它们而不会受到重叠的困扰吗?
谢谢你!
编辑:我稍微减少了代码,这样它就可以像这样运行。
将熊猫用于大型数据集,我已经将其缩减为我需要的信息。基本上,我想根据帖子中使用的主题标签数量(范围从 1- 6,我将其视为分类变量)。这导致在同一帧中总共有 2*6=12 个箱线图,以便于比较。
我做了一些研究,我知道 df.boxplot(by='x'),但这并没有考虑比较两个国家的额外水平。
数据集包含标签数量(int)、国家(字符串)、朋友数量(int)的列。
值得一提的是,我对 Python 绘图还很陌生,包括轴和子图等内容,因此如果可能,请在您的答案中包含一些额外信息。
编辑:数据集的小样本
#followers #friends #mentions #hashtags country lang_user place
450 53 71 1 0 ja es NaN
489 54 34 1 1 ja es NaN
867 1569 1999 0 0 en es NaN
1021 224 242 0 3 ja ja NaN
1022 377 506 1 5 ja ja NaN
1023 315 305 0 2 ja ja NaN
Run Code Online (Sandbox Code Playgroud) 我正在使用威斯康星数据集。要显示箱线图,其中 Y 轴是数据帧的变量(例如:radius_mean),X 轴是诊断,我执行以下操作:
sns.boxplot(x='label', y='radius', data=dsWisconsin)
Run Code Online (Sandbox Code Playgroud)
(dsWisconsin 是从 .csv 加载 pandas 的数据框)
我的问题是,如何显示每个变量的所有箱线图(在网格中),而不是为每个变量执行前面的代码?
例如,类似这样的内容,但带有威斯康星州每个变量的箱线图:
sns.boxplot(x='label', y='radius', data=dsWisconsin)
Run Code Online (Sandbox Code Playgroud) 我想在一些图中添加一条水平线,即“目标”线:带状图、箱线图和小提琴图,以显示理想值数据(或理想情况下的范围)。
这个 R 示例(在箱线图中添加多条水平线) - 第一张图像 - 基本上就是它(尽管我会做一些格式化以使其易于展示)。
Python中的R abline() 等价物对我没有帮助(或者我还没有弄清楚如何),因为我正在使用分类数据,所以我只想基本上定义(例如)y=3并绘制它。我的代码(如下)工作正常,我只是不知道如何添加一行。
fig, ax = plt.subplots(nrows=4,figsize=(20,20))
sns.violinplot(x="Wafer", y="Means", hue='Feature',
data=Means[Means.Target == 1], ax=ax[0])
sns.violinplot(x="Wafer", y="Means", hue='Feature',
data=Means[Means.Target == 3], ax=ax[1])
sns.boxplot(x="Feature", y="Means",
data=Means, linewidth=0.8, ax=ax[2])
sns.stripplot(x="Feature", y="Means", hue='Wafer',
data=Means, palette="plasma", jitter=0.1, size=5.5, ax=ax[3])
Run Code Online (Sandbox Code Playgroud)
非常感谢任何帮助。
我无法删除下面所示的每个箱线图下的标签“年龄”。它是自动生成的,无法摆脱它。这是我的代码和输出:
dataset.boxplot(column=['Age'], by=None, ax=None, fontsize=None, rot=0,
grid=True, figsize=None, layout=None, return_type=None)
plt.suptitle('Attrition by Age')
plt.xlabel('test')
plt.title('test6')
plt.subplot(121)
plt.xlabel('test2')
plt.title('test3')
plt.ylabel('test5')
Run Code Online (Sandbox Code Playgroud)
我正在尝试制作一个图形,该图形的底部有密度图,密度图上方有相应的箱线图。我的密度图和箱线图由分类变量填充/着色。我想不出一种方法让箱线图高于密度图并且也被躲避。这是我到目前为止能够得到的:
d <- mtcars
d$cyl <- as.factor(d$cyl)
fig <- ggplot(data = d) +
geom_density(aes(x = mpg, fill = cyl),
position = "dodge",
na.rm = TRUE) +
geom_boxplot(aes(x = mpg, color = cyl),
position = ggstance::position_dodgev(height = 1),
width = .05, show.legend = FALSE,
na.rm = TRUE) +
facet_grid(~am, scales = "free_x") +
scale_fill_brewer(palette = "Set2") +
scale_color_brewer(palette = "Set2") +
theme_minimal() +
guides(color = FALSE, fill = FALSE)
fig
Run Code Online (Sandbox Code Playgroud)

但是,正如您所看到的,这不会将箱线图均匀地移动到密度图上方。我也用过
geom_boxplot(aes(x = mpg, color = cyl),
position = position_nudge(x = …Run Code Online (Sandbox Code Playgroud)