我试图结合直方图和箱图来可视化连续变量.这是我到目前为止的代码
require(ggplot2)
require(gridExtra)
p1 = qplot(x = 1, y = mpg, data = mtcars, xlab = "", geom = 'boxplot') +
coord_flip()
p2 = qplot(x = mpg, data = mtcars, geom = 'histogram')
grid.arrange(p2, p1, widths = c(1, 2))
Run Code Online (Sandbox Code Playgroud)

除了x轴的对齐外,它看起来很好.谁能告诉我如何对齐它们?或者,如果某人有更好的方法来使用此图表ggplot2,那么也会受到赞赏.
前段时间我问了一个关于绘制boxplot Link1的问题.
我有3个不同的组(或标签)的一些数据请在这里下载.我可以使用以下R代码来获取boxplot
library(reshape2)
library(ggplot2)
morphData <- read.table(".\\TestData3.csv", sep=",", header=TRUE);
morphData.reshaped <- melt(morphData, id.var = "Label")
ggplot(data = morphData.reshaped, aes(x=variable, y=value)) +
+ geom_boxplot(aes(fill=Label))
Run Code Online (Sandbox Code Playgroud)
在这里,我只是想知道如何将重要水平放在箱线图上方.为了使自己清楚,我在这里放了一张剪纸截图:

我正在做一个基本的箱子图,其中y=age和x=Patient groups
age <- ggplot(data, aes(factor(group2), age)) + ylim(15, 80)
age + geom_boxplot(fill = "grey80", colour = "#3366FF")
Run Code Online (Sandbox Code Playgroud)
我希望你能用一些东西来帮助我:
1)是否可以在每个组框图上面包括每组的观察次数(但不是在我的组标签所在的X轴上),而不必在油漆中执行此操作:)?我尝试过使用:
age + annotate("text", x = "CON", y = 60, label = "25")
Run Code Online (Sandbox Code Playgroud)
CON第一组在哪里,就在y = 60这个组的箱线图上方.但是,该命令不起作用.我认为它有一些事情可以做,它x是一个连续的而不是一个分类的变量.
2)尽管有很多关于使用平均值而不是中位数的问题,我仍然没有找到适合我的代码?
3)在同样的问题上你有没有办法在箱线图中包含平均组数据?也许用
age + stat_summary(fun.y=mean, colour="red", geom="point")
Run Code Online (Sandbox Code Playgroud)
然而,它只包括一个平均所在的点.或者再次使用
age + annotate("text", x = "CON", y = 30, label = "30")
Run Code Online (Sandbox Code Playgroud)
哪一个CON是第一组,y = 30是〜组年龄均值.知道如何灵活和丰富的ggplot2语法,我希望有一种更优雅的方式来使用真实的统计输出而不是annotate.
任何建议/链接将不胜感激!
谢谢!!
我有这样的数据帧
import seaborn as sns
import pandas as pd
%pylab inline
df = pd.DataFrame({'a' :['one','one','two','two','one','two','one','one','one','two'], 'b': [1,2,1,2,1,2,1,2,1,1], 'c': [1,2,3,4,6,1,2,3,4,6]})
Run Code Online (Sandbox Code Playgroud)
单个箱图是可以的
sns.boxplot( y="b", x= "a", data=df, orient='v' )
Run Code Online (Sandbox Code Playgroud)
但我想为所有变量构建一个子图.我做
names = ['b', 'c']
plt.subplots(1,2)
sub = []
for name in names:
ax = sns.boxplot( y=name, x= "a", data=df, orient='v' )
sub.append(ax)
Run Code Online (Sandbox Code Playgroud)
我明白了
怎么解决?thanx的帮助
我有一个显示多个盒子的箱线图.我想连接每个盒子的平均值和一条线.箱形图默认不显示均值,而中间线仅表示中位数.我试过了
ggplot(data, aes(x=xData, y=yData, group=g))
+ geom_boxplot()
+ stat_summary(fun.y=mean, geom="line")
Run Code Online (Sandbox Code Playgroud)
这不起作用.
有趣的是,干嘛
stat_summary(fun.y=mean, geom="point")
Run Code Online (Sandbox Code Playgroud)
绘制每个框中的中间点.为什么"排队"不起作用?
这样的东西,但使用ggplot2,http://www.aliquote.org/articles/tech/RMB/c4_sols/plot45.png
我可以ggplot2用来制作小提琴情节吗?也许使用一些变化geom_boxplot()?
我创建了一个包含多个组的图形,并在一行线上绘制了一个geom_boxplot().但是,透明地对盒子进行着色以便可以看到线条会很不错.
这是一些示例数据:
x11()
name <- c("a", "a", "a", "a", "a", "a","a", "a", "a", "b", "b", "b","b", "b", "b","b", "b", "b")
class <- c("c1", "c1", "c1", "c2", "c2", "c2", "c3", "c3", "c3","c1", "c1", "c1", "c2", "c2", "c2", "c3", "c3", "c3")
year <- c("2010", "2009", "2008", "2010", "2009", "2008", "2010", "2009", "2008", "2010", "2009", "2008", "2010", "2009", "2008", "2010", "2009", "2008")
value <- c(100, 33, 80, 90, 80, 100, 100, 90, 80, 90, 80, 100, 100, 90, 80, 99, 80, 100)
df …Run Code Online (Sandbox Code Playgroud) 我有一个包含csv文件的文件夹,每个文件有两列数据,例如:
0,red
15.657,red
0,red
0,red
4.429,red
687.172,green
136.758,green
15.189,red
0.152,red
23.539,red
0.348,red
0.17,blue
0.171,red
0,red
61.543,green
0.624,blue
0.259,red
338.714,green
787.223,green
1.511,red
0.422,red
9.08,orange
7.358,orange
25.848,orange
29.28,orange
Run Code Online (Sandbox Code Playgroud)
我使用以下R代码生成箱图:
files <- list.files(path="D:/Ubuntu/BoxPlots/test/", pattern=NULL, full.names=F, recursive=FALSE)
files.len<-length(files)
col_headings<-c("RPKM", "Lineage")
for (i in files){
i2<-paste(i,"png", sep=".")
boxplots<-read.csv(i, header=FALSE)
names(boxplots)<-col_headings
png(i2)
bplot<-ggplot(boxplots, aes(Lineage, RPKM)) + geom_boxplot(aes(fill=factor(Lineage))) + geom_point(aes(colour=factor(Lineage)))
print(bplot)
graphics.off()
}
Run Code Online (Sandbox Code Playgroud)
现在我想改变箱线图的颜色以匹配相应的x轴颜色标签.我还想更改x轴标签的名称,以及它们的顺序.有没有办法使用ggplot或qplot来做到这一点?
我想比较一组得分(score)的分布,按一些类别(centrality)分组并用其他一些()着色model.我用seaborn试过以下内容:
plt.figure(figsize=(14,6))
seaborn.boxplot(x="centrality", y="score", hue="model", data=data, palette=seaborn.color_palette("husl", len(models) +1))
seaborn.despine(offset=10, trim=True)
plt.savefig("/home/i11/staudt/Eval/properties-replication-test.pdf", bbox_inches="tight")
Run Code Online (Sandbox Code Playgroud)
我对这个情节有一些问题:
model值original是特殊的,因为所有其他分布应该与分布进行比较original.这应该在视图中直观地反映出来.我可以制作original每组的第一个盒子吗?我可以以某种方式偏移或标记它吗?是否有可能在每个original分布的中位数和一组方框中绘制一条水平线?score非常小,如何正确缩放y轴来显示它们?编辑:
这是一个带有对数刻度的y轴的示例 - 也不是理想的.为什么有些盒子似乎在低端切断?
我有代码创建一个boxplot,使用R中的ggplot,我想用年份和Battle标记我的异常值.
这是我创建箱图的代码
require(ggplot2)
ggplot(seabattle, aes(x=PortugesOutcome,y=RatioPort2Dutch ),xlim="OutCome",
y="Ratio of Portuguese to Dutch/British ships") +
geom_boxplot(outlier.size=2,outlier.colour="green") +
stat_summary(fun.y="mean", geom = "point", shape=23, size =3, fill="pink") +
ggtitle("Portugese Sea Battles")
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?我知道这是正确的,我只想标记异常值.
boxplot ×10
ggplot2 ×8
r ×8
seaborn ×2
graphics ×1
histogram ×1
loops ×1
matplotlib ×1
plot ×1
python ×1
python-3.x ×1
significance ×1