标签: boxplot

ggplot2:强制空的二级类别

我正试图为多级分组箱图保留"空白空间".

set.seed(42)
n <- 100
dat <- data.frame(x=runif(n),
                  cat1=sample(letters[1:4], size=n, replace=TRUE),
                  cat2=sample(LETTERS[1:3], size=n, replace=TRUE))
ggplot(dat, aes(cat1, x)) + geom_boxplot(aes(fill=cat2))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如果我强制其中一个组为空:

dat <- subset(dat, ! (cat1 == 'b' & cat2 == 'B'))
table(dat$cat1, dat$cat2)
##    
##      A  B  C
##   a  9  9  7
##   b  8  0  5
##   c 13 11  6
##   d 11 10  5
ggplot(dat, aes(cat1, x)) + geom_boxplot(aes(fill=cat2))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

第二组"b"现在扩展到填补空间.我想要的是:

在此输入图像描述

SO 9818835(强制出现一个空的级别)在顶级工作正常,但我无法弄清楚如何使它适用于第二级别的类别.在scale_x_discrete(...),我尝试设置:

  • breaks=letters[1:4]
  • breaks=LETTERS[1:3]
  • breaks=list(letters[1:4], LETTERS[1:3]) (刺伤)
  • breaks=NULL
  • breaks=func在哪里func <- function(x, …

r ggplot2 boxplot

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

如何绘制具有不同范围的多列的箱线图

我想绘制数据框多列的箱线图。使用 R,我可以使用轴并设置不同的范围以按照我想要的方式显示绘图。但在 python 中,我只能有一个范围,不能为不同的列设置不同的范围。如何在 python 中绘制类似于 ggplot2 的箱线图?

我的代码片段如下。我还放了ggplot、seaborn和plotly的结果。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.read_excel('data-rta-3phase-boxplot.xlsx', header=0)

sns.boxplot(x="variable", y="value", data=pd.melt(df))
plt.show()

import plotly.graph_objects as go

fig = go.Figure()

for col in df:
  fig.add_trace(go.Box(y=df[col].values, name=df[col].name))
  
fig.show()
Run Code Online (Sandbox Code Playgroud)

我想要的看起来像这样(用R中的ggplot2创建)

在此输入图像描述

这些是我在plotly和seaborn中得到的

在此输入图像描述 在此输入图像描述

更新!!!!!

在社区的指导下,我成功创建了一个完全可控的代码来绘制箱线图。

import pandas as pd
import plotly.express as px

df = pd.read_excel('data-rta-3phase-boxplot.xlsx', header=0)

fig = px.box(df.melt(), y="value", facet_col="variable", boxmode="overlay", color="variable")
fig.update_yaxes(matches=None)

for i in range(len(fig["data"])):
    yaxis_name = 'yaxis' if i …
Run Code Online (Sandbox Code Playgroud)

python boxplot plotly seaborn

9
推荐指数
2
解决办法
9613
查看次数

如何将boxplot的数字输出(使用plot = FALSE)转换为可用的?

我成功地使用该boxplot函数生成了... boxplots.现在我需要生成包含boxplot计算的统计数据的表,以便创建绘图.

我这样做是通过使用该plot=FALSE选项.

问题是,这会以一种相当奇怪的格式生成数据,而我根本无法做任何事情.这是一个例子:

structure(list(stats = structure(c(178.998262143545, 182.227431564442, 
202.108456373209, 220.375358994654, 221.990406228232, 216.59986775699, 
217.054997032148, 228.509462713206, 267.070720949859, 284.832378859975, 
189.864120937198, 201.876421960518, 219.525439081472, 234.260088973545, 
279.343359793024, 209.472617639903, 209.526516071858, 214.785213079737, 
230.027361556731, 240.0647114578, 202.057148813419, 207.375619207685, 
220.093663781351, 226.246698737471, 240.343646265795), .Dim = c(5L, 
5L)), n = c(4, 6, 8, 4, 8), conf = structure(c(171.971593703341, 
232.245319043076, 196.247705331772, 260.771220094641, 201.435457751239, 
237.615420411705, 198.589545146688, 230.980881012787, 209.552007821332, 
230.635319741371), .Dim = c(2L, 5L)), out = numeric(0), group = numeric(0), 
names = c("U", "UM", "M", "LM", "L")), .Names = c("stats", …
Run Code Online (Sandbox Code Playgroud)

r boxplot

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

是否可以轻松地从先前计算的统计数据中绘制箱线图(在R?中)

可能重复:
在给定25,50,75百分位数和最小值和最大值的R中绘制bloxplots

我从各种数据集中得到了许多汇总统计数据:最大值,最小值,平均值,中位数等.我想绘制这些的箱形图 - 或者至少是类似的情节箱形图(我没有UQ和LQ统计数据,虽然有可能得到那些).

我没有原始数据,所以我不能只使用boxplotR中的函数.当你只有摘要统计时,有没有一种简单的方法在R中执行此操作?如果没有,是否有一种简单的方法可以使用其他免费工具执行此操作?

r data-visualization boxplot

8
推荐指数
1
解决办法
8161
查看次数

如何按照pandas中的中位数值对盒子图进行排序

我有一个数据帧outcome2,我用以下方式生成一个分组的boxplot:

In [11]: outcome2.boxplot(column='Hospital 30-Day Death (Mortality) Rates from Heart Attack',by='State')
        plt.ylabel('30 Day Death Rate')
        plt.title('30 Day Death Rate by State')
Out [11]:
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我想做的是按照每个州的中位数对地块进行排序,而不是按字母顺序排序.不知道该怎么做.

python matplotlib boxplot pandas

8
推荐指数
1
解决办法
3203
查看次数

在Python中使用Boxplot的直方图

嗨,我想绘制一个直方图,其中显示直方图顶部的箱线图,显示Q1,Q2和Q3以及异常值.示例电话如下.(我使用的是Python和Pandas) 在此输入图像描述

我已经检查了几个使用的例子,matplotlib.pyplot但几乎没有一个很好的例子.我还希望直方图曲线如下图所示. 在此输入图像描述

我也试过seaborn,它提供了形状线和直方图,但没有找到一种方法与它上面的boxpot结合.

任何人都可以帮我这个有这个matplotlib.pyplot或使用pyplot

python matplotlib histogram boxplot seaborn

8
推荐指数
2
解决办法
4855
查看次数

ggplot2 boxplot的宽度

我试图制作两个独立的情节,我想在我的海报中并排呈现(我需要将它们分开并且不能使用facet_wrap).其中一个地块有几个箱图,而第二个地块只有一个.我如何操纵箱形图的宽度,使得第二个箱形图与图1中任何一个单独的箱形图的宽度相同,当我将两个图并排放置时?一个可重复的例子:

tvalues <- sample(1:10000,1200)
sex <- c(rep('M',600),rep('F',600))
region <- c('R1','R2','R3','R4','R5')
df1 <- data.frame(tvalues,sex,region)

tvalues2 <- sample(1:10000,200)
sex2 <- sample(c('M','F'),200,replace=T)
region2 <- 'R6'
df2 <- data.frame(tvalues2,sex2,region2)

p1 <- ggplot(data=df1,aes(x=region,y=tvalues,color=sex)) + 
geom_boxplot(width=0.5)
p2 <- ggplot(data=df2,aes(x=region2,y=tvalues2,color=sex2)) + 
geom_boxplot(width=0.5)
Run Code Online (Sandbox Code Playgroud)

情节1 情节1:

Plot2 情节2:

r ggplot2 boxplot

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

如何在R中创建分组箱图?

我想合并分组的三个数据集,并获得只有两个框的图形,1表示A,1表示B.你能建议如何获得吗?

我正在尝试在R中创建一个分组的箱图.我有两组:A和B,在每组中我有3个子组,每个子组有5个测量值.

以下是我构建盒子图的方式,但如果有人有更好,更短或更简单的方法,我会很感激

A1 <- c(1,2,9,6,4)
A2 <- c(5,1,9,2,3)
A3 <- c(1,2,3,4,5)
B1 <- c(2,4,6,8,10)
B2 <- c(0,3,6,9,12)
B3 <- c(1,1,2,8,7)

DF <- data.frame(A1, A2, A3, B1, B2, B3)

boxplot(DF, col = rainbow(3, s = 0.5))
axis(side = 1, at = c(2,5), labels = c("A","B"))
legend("topleft", fill = rainbow(3, s = 0.5), legend = c(1,2,3), horiz = T)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如何正确(组合)A和B中的框组合,并在我尝试时将轴标题固定为简单的A和B?

我喜欢类似的东西

在此输入图像描述

customization plot r boxplot

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

使用ggplot2合并并完美对齐直方图和Boxplot

从昨天开始,我正在阅读答案和网站,以便在一个图表中合并和对齐,histogramboxplot使用ggplot2包生成.

这个问题与其他问题不同,因为boxplot chart需要减少在左边缘heightaligned左边缘histogram.

考虑以下数据集:

my_df <- structure(list(id = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 
12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 
28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 
44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, …
Run Code Online (Sandbox Code Playgroud)

r histogram ggplot2 boxplot cowplot

8
推荐指数
1
解决办法
1961
查看次数

Boxplot:seaborn 中的自定义宽度

我正在尝试在seaborn中绘制箱线图,其宽度取决于x轴值的对数。我正在创建宽度列表并将其传递给 seaborn.boxplot 的 widths=widths 参数。

但是,我得到了

raise ValueError(datashape_message.format("widths"))
ValueError: List of boxplot statistics and `widths` values must have same the length
Run Code Online (Sandbox Code Playgroud)

当我调试和检查时,箱线图统计中只有一个字典,而我有 8 个箱线图。无法准确判断问题出在哪里。

这是箱线图的图像

我使用 pandas 数据框和seaborn 进行绘图。

python matplotlib boxplot seaborn

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