如何调整我的Y轴以忽略异常值,就像在这篇文章中一样,但是在一个更具挑战性的情况下,我有4个箱图和"自由刻面"布局?
p < - ggplot(molten.DF,aes(x = class,y = SOC,fill = class))+ geom_boxplot()+ facet_grid(layer~.,scales ="free",space ="free")
正如您在我的图中所看到的,考虑Y轴范围内的异常值会使框更难以阅读.如果结果中仍然可以看到一些异常值,那就不重要了,但我想真正关注这些方块!

在过去,我已经能够使用ggplot2通过提供较低的晶须,较低的分位数,中位数,较高的分位数和较高的晶须以及x轴标签来创建箱图.例如:
DF <- data.frame(x=c("A","B"), min=c(1,2), low=c(2,3), mid=c(3,4), top=c(4,5), max=c(5,6))
ggplot(DF, aes(x=x, y=c(min,low,mid,top,max))) +
geom_boxplot()
Run Code Online (Sandbox Code Playgroud)
将为两组数据(A和B)制作一个箱线图.这不再适合我.我收到以下错误:
Error: Aesthetics must either be length one, or the same length as the dataProblems:x
Run Code Online (Sandbox Code Playgroud)
有没有人知道ggplot2中是否有某些变化?
对于以下数据帧(df),
ColA ColA_weights ColB ColB_weights
0 0.038671 1073 1.859599 1
1 20.39974 57362 10.59599 1
2 10.29974 5857 2.859599 1
3 5.040000 1288 33.39599 1
4 1.040000 1064 7.859599 1
Run Code Online (Sandbox Code Playgroud)
我想绘制一个加权箱图,其中每个框的权重分别由ColA_weights和ColB_weights给出,我只是做
df.boxplot(fontsize=12,notch=0,whis=1.5,vert=1,widths=0.2)
Run Code Online (Sandbox Code Playgroud)
但是,似乎没有规定包括权重.有解决方案吗
谢谢!
我试图在今年发表在Nature上的一篇文章中对图2d-f进行类似的绘图.它基本上是一个半箱图,另一半有点.
任何人都可以给我一些提示吗?非常感谢你!
这些是我的数据和代码,它们生成带有内部点的完整框
require(magrittr)
require(tidyverse)
dat <- structure(list(p1 = c(0.0854261831077604, 0.408418657218253,
0.577793646477315, 0.578028229977424, 0.48933166218204, 0.53117814324334,
0.526653494462464, 0.00687616283435221, 0.444300425796509, 0.00287319455358522,
0.949821402532831, 0.96832469523368, 0.953281969982759, 0.360125244759434,
0.407921095422844, 0.885776732104954, 0.159882184516691, 0.911094990767761,
0.0444367172734037, 0.144888951725151, 0.508858686640707, 0.694913731085945,
0.117270366119258, 0.78227546070467, 0.980457304886186, 0.711464034564424,
0.753944466390685, 0.0474210438747038, 0.00344183466223558, 0.0290017465534545,
0.75092385236303, 0.868873921257987, 0.744396990487425, 0.0140007244233847,
0.0332266395043963, 0.482897084793009, 0.0535516646483004, 0.452926358923891,
0.0144057727301603, 0.171918034525543), p2 = c(0.101262675229211,
0.196913109208586, 0.37814311161382, 0.0677625689405156, 0.12517090579686,
0.409083554335168, 0.158886941347288, 0.847394861862651, 0.180560031076741,
0.967122694294885, 0.000901627067665116, 0.00039495110143705,
9.70707318411806e-05, 0.546200038486894, 0.435475454787648, 5.95555269800323e-06,
0.0178837768834925, 8.42690065415846e-06, 0.00777059697751842,
0.0020397073541544, 0.486699073016371, 0.283679673247571, 0.857183359146641,
0.200712003853458, 0.0164911141652784, …Run Code Online (Sandbox Code Playgroud) 我已经在文本文件中收集了一些数据,并且想要创建一个箱线图.但是,该数据文件包含例如可变长度的行.
1.2,2.3,3.0,4.5
1.1,2.2,2.9
对于相等的长度我可以做
PW = numpy.loadtxt("./ learning.dat")
matplotlib.boxplot(PW.T);
如何处理变量长度数据线?
我想对geom_boxplot()进行一些修改.因为我的盒形图是真的"小"有时候(见黄色和绿色分支在图形这里)我要更加突出位数.那么可以调整中线的厚度吗?
我正在尝试用我的数据绘制一个箱线图,在R中使用'ggplot',但我无法做到.谁能帮我吗?数据如下表所示:
Paratio ShapeIdx FracD NNDis Core
-3.00 1.22 0.14 2.71 7.49
-1.80 0.96 0.16 0.00 7.04
-3.00 1.10 0.13 2.71 6.85
-1.80 0.83 0.16 0.00 6.74
-0.18 0.41 0.27 0.00 6.24
-1.66 0.12 0.11 2.37 6.19
-1.07 0.06 0.14 0.00 6.11
-0.32 0.18 0.23 0.00 5.93
-1.16 0.32 0.15 0.00 5.59
-0.94 0.14 0.15 1.96 5.44
-1.13 0.31 0.16 0.00 5.42
-1.35 0.40 0.15 0.00 5.38
-0.53 0.25 0.20 2.08 5.32
-1.96 0.36 0.12 0.00 5.27
-1.09 0.07 0.13 0.00 …Run Code Online (Sandbox Code Playgroud) 我可以在pandas DataFrame中获得一个工资列的boxplot ...
train.boxplot(column='Salary', by='Category', sym='')
Run Code Online (Sandbox Code Playgroud)
...但是我无法弄清楚如何定义"类别"列上使用的索引顺序 - 我想根据另一个标准提供我自己的自定义顺序:
category_order_by_mean_salary = train.groupby('Category')['Salary'].mean().order().keys()
Run Code Online (Sandbox Code Playgroud)
如何将自定义列顺序应用于boxplot列?(除了使用前缀强制排序的丑陋的kludging列名)
'Category'是一个带有27个不同值的字符串列:boxplot.所以它可以很容易地分解['Accounting & Finance Jobs','Admin Jobs',...,'Travel Jobs']
在检查时,限制在内部pd.Categorical.from_array(),它转换列对象而不允许排序:
我想我可以破解pandas boxplot()的自定义版本,或者进入对象的内部.并提交增强请求.
编辑:这个问题出现了大熊猫~0.13,并且可能已被最近的(0.19 +?)版本淘汰,根据@ Cireo的最新答案.
如何为大熊猫时间序列创建一个箱形图,我每天都有一个盒子?
每小时数据的样本数据集,其中一个框应包含24个值:
import pandas as pd
n = 480
ts = pd.Series(randn(n),
index=pd.date_range(start="2014-02-01",
periods=n,
freq="H"))
ts.plot()
Run Code Online (Sandbox Code Playgroud)
我知道我可以为当天制作一个额外的列,但我希望有适当的x轴标记和x限制功能(如in ts.plot()),因此能够使用日期时间索引会很棒.
没有为R/GGPLOT2类似的问题在这里,如果它有助于澄清我想要的东西.
我有以下dataframe生成使用pivot_table:
我boxplot在多列中使用以下代码:
fig = plt.figure()
for i in range(0,25):
ax = plt.subplot(1,2,i+1)
toPlot1.boxplot(column='Score',by=toPlot1.columns[i+1],ax=ax)
fig.suptitle('test title', fontsize=20)
plt.show()
Run Code Online (Sandbox Code Playgroud)
我期待如下输出:
但是这段代码给了我以下错误:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-275-9c68ce91596f> in <module>()
1 fig = plt.figure()
2 for i in range(0,25):
----> 3 ax = plt.subplot(1,2,i+1)
4 toPlot1.boxplot(column='Score',by=toPlot1.columns[i+1],ax=ax)
5 fig.suptitle('test title', fontsize=20)
E:\Anaconda2\lib\site-packages\matplotlib\pyplot.pyc in subplot(*args, **kwargs)
1020
1021 fig = gcf()
-> 1022 a = fig.add_subplot(*args, **kwargs)
1023 bbox = a.bbox
1024 byebye = []
E:\Anaconda2\lib\site-packages\matplotlib\figure.pyc in …Run Code Online (Sandbox Code Playgroud) boxplot ×10
ggplot2 ×5
python ×5
r ×5
pandas ×4
facet ×1
matplotlib ×1
outliers ×1
plot ×1
time-series ×1