我创建了一个facet_grid包含多个变量的箱线图。举个例子,该图可以通过以下虚拟数据重现
require(ggplot2)
require(plyr)
library(reshape2)
set.seed(1234)
x<- rnorm(100)
y.1<-rnorm(100)
y.2<-rnorm(100)
y.3<-rnorm(100)
y.4<-rnorm(100)
df<- (as.data.frame(cbind(x,y.1,y.2,y.3,y.4)))
dfmelt<-melt(df, measure.vars = 2:5)
Run Code Online (Sandbox Code Playgroud)
并将结果图创建为
dfmelt$bin <- factor(round_any(dfmelt$x,0.5))
ggplot(dfmelt, aes(x=bin, y=value, fill=variable))+
geom_boxplot()+
facet_grid(.~bin, scales="free")+
labs(x="X (binned)")+
theme(axis.text.x=element_blank())
Run Code Online (Sandbox Code Playgroud)
这给出了以下结果:

但是,我想重新定义箱线图晶须,使它们不代表 0.25 - 1.5 IQR / 0.75 + IQR 和异常值,而是 (i) 完整的第 5 个和第 95 个百分位数或 (ii) 数据的无穷大和最高。
我想使用 pylab 更改 y 轴标签的字体大小。我怎么办?
我正在尝试创建一个多项目时间表,其中包含项目的各个阶段,以便在一个易于可视化的地方组织我们当前的所有项目。
我最初找到了这个timeline()包,并且能够半创建我所希望的。然而,这个包似乎不是很可定制,所以我希望能完成我的时间线ggplot2()。
这是我的假数据:
Phase Project StartDate EndDate
SD Test1 2015-08-01 2015-08-31
DD Test1 2015-08-31 2015-09-30
CD Test1 2015-09-30 2015-11-14
PC Test1 2015-11-14 2015-12-14
CA Test1 2015-12-14 2016-08-10
SD Test2 2015-09-01 2015-10-01
DD Test2 2015-10-01 2015-10-31
CD Test2 2015-10-31 2015-12-15
PC Test2 2015-12-15 2016-01-14
CA Test2 2016-01-14 2017-01-08
SD Test3 2016-01-01 2016-01-13
DD Test3 2016-01-13 2016-01-25
CD Test3 2016-01-25 2016-02-12
PC Test3 2016-02-12 2016-03-13
CA Test3 2016-03-13 2017-01-07
SD Test4 2015-06-01 2015-06-01
DD Test4 2015-06-01 2015-06-01
CD …Run Code Online (Sandbox Code Playgroud) 您将如何将点添加到多个不同长度的箱线图中?
boxplot(box1, box2, box3, box4, beside=T, col=c("grey100", "grey70", "grey50", "grey70"), names=c("box1", "box2", "box3", "box4"), main="all the boxes", las=2)
Run Code Online (Sandbox Code Playgroud)
如果我放入一些东西
points()
Run Code Online (Sandbox Code Playgroud)
功能我不能添加多个,如果我将它们分开放置,它们将被添加到所有箱线图中,我只想看到相应的点。
我有两组平均分数和标准差,代表我们对平均估计值的信心。注意:我没有原始分数,只是表示模型输出的估计值和模型输出的估计值的 SD,围绕该平均值。
我有一个大约 20 的特征集,我想比较每个特征的平均值 +/- 标准偏差,我的 2 组中的每一个。它基本上看起来像这样:
ggplot() 似乎处理具有原始数据的数据,它计算每个特征数组的均值和标准差。boxplot() 的工作原理类似。
谁能帮我想出一种方法来以这种方式可视化我的结果?
我有以下数据:
structure(list(osc = c(14944966.1544549, 21761557.221199, 22468349.3727696,
25347942.08608, 23753968.4211987, 21988336.4211988, 24782010.0211988,
23466022.821199, 24862768.4211988, 24753030.8211989, 6290574.27199998,
6347336.50713587, 6133022.93504007, 6096474.45708794, 6310948.70553584,
6730668.06553585, 7041845.44716779, 6834310.72460792, 7099525.34016,
7427605.81836809, 6489665.40799994, 3923620.15923189, 5597911.8079998,
5246583.80800014, 5770297.40799987, 5486879.80800004, 6084583.80800003,
6719183.80800007, 6575468.60799991, 10992555.0079998), phone = c(14012229.0213694,
21428112.3570197, 21387319.7062893, 23452910.4634375, 23561326.6405997,
21295405.7333708, 24791075.2993385, 23077156.3984319, 24595401.2681341,
24576961.6364291, 6436497.31657422, 6273285.60788477, 5998908.36035547,
5837113.11736719, 6138679.45996679, 6229959.76306446, 6790623.7462578,
6752280.48147853, 6625959.55551369, 6979249.86094727, 6642155.1844375,
3965572.43175781, 5462667.62250977, 5232575.67903125, 5466322.91543554,
5380533.88633204, 5814654.14943164, 6482157.46073438, 6269535.74795312,
10938578.8058379), type = c("local", "local", "local", "local",
"local", "local", "local", "local", "local", "local", "up", "up",
"up", …Run Code Online (Sandbox Code Playgroud) 我正在使用 ggplot 创建箱线图。代码如下:
ggplot(my_data, aes(x = as.factor(viotiko), y = pd_1year, fill = as.factor(viotiko))) + geom_boxplot() +
labs(title="Does the PD differ significantly by 'Viotiko' group?",x="Viotiko Group", y = "PD (pd_1year)")
Run Code Online (Sandbox Code Playgroud)
这将输出以下图表:
接下来,我想关注 y 值的范围 --[0, 0.05] -- 我再次运行更改参数的代码。我并不是要排除数据并改变均值和分布,而只是关注特定范围的 y 值。代码又是这样的:
ggplot(my_data, aes(x = as.factor(viotiko), y = pd_1year, fill = as.factor(viotiko))) + geom_boxplot() +
labs(title="Does the PD differ significantly by 'Viotiko' group?",x="Viotiko Group", y = "PD (pd_1year)") +
scale_y_continuous(breaks =seq(0, .05, .01), limit = c(0, 0.05))
Run Code Online (Sandbox Code Playgroud)
这返回了一个警告“删除了 173664 行包含非有限值 (stat_boxplot)”。并输出如下图:
显然, ggplot …
我正在使用 ggplot2 创建一个箱线图。我的 R 代码如下:
ggplot(mydata4, aes(PropertyCode,Total.Extras.Per.GN, fill=Original.Meal.Plan.Code))+
geom_boxplot(outlier.shape=NA) +
ylim(c(0,1000))
Run Code Online (Sandbox Code Playgroud)
这给了我以下输出:
但是,在将以下代码行添加到我现有的代码后,我最终得到了图 2(如下所示):
+ scale_y_continuous(breaks = seq(0, 1000, by=100))
Run Code Online (Sandbox Code Playgroud)
如您所见,它扭曲了整个图形。我如何维护我的图表如图 1 所示,同时在 y 轴上显示正确的间隔?
我有代表两种方法的结果的箱线图,每种方法都有两种验证方法和三种场景,使用 ggplot2 绘制。一切正常,但我想更改 x 轴刻度标签以区分每个组中使用的技术类型。
我使用了以下代码:
data <- read.csv("results.csv", header = TRUE, sep=',')
ggplot() +
geom_boxplot(data = data, aes(x = Validation, y = Accuracy, fill = Scenario)) +
facet_wrap(~ Method) +
labs(fill = "")
Run Code Online (Sandbox Code Playgroud)
其中我的数据结构如下:
Method Validation Scenario Accuracy
-------------------------------------------------------
Method 1 Iterations Scenario 1 0.90
Method 1 Iterations Scenario 2 0.80
Method 1 Iterations Scenario 3 0.86
Method 1 Recursive Scenario 2 0.82
Method 2 Iterations Scenario 1 0.69
Method 2 Recursive Scenario 3 0.75
Run Code Online (Sandbox Code Playgroud)
并得到以下情节:
我只想将方法 1 和方法 …
我的熊猫数据框有两列:category和duration。我使用以下代码制作所有数据点的箱线图。
import matplotlib.pyplot as plt
plt.boxplot(df.duration)
plt.show()
Run Code Online (Sandbox Code Playgroud)
但是,如果我想要一个盒子 for each category,我该如何修改上面的代码?谢谢!