有没有办法用边缘直方图创建散点图,就像下面的示例一样ggplot2?在Matlab中它是scatterhist()函数,并且R也存在等价物.但是,我还没有看到ggplot2.

我开始尝试创建单个图形,但不知道如何正确排列它们.
require(ggplot2)
x<-rnorm(300)
y<-rt(300,df=2)
xy<-data.frame(x,y)
xhist <- qplot(x, geom="histogram") + scale_x_continuous(limits=c(min(x),max(x))) + opts(axis.text.x = theme_blank(), axis.title.x=theme_blank(), axis.ticks = theme_blank(), aspect.ratio = 5/16, axis.text.y = theme_blank(), axis.title.y=theme_blank(), background.colour="white")
yhist <- qplot(y, geom="histogram") + coord_flip() + opts(background.fill = "white", background.color ="black")
yhist <- yhist + scale_x_continuous(limits=c(min(x),max(x))) + opts(axis.text.x = theme_blank(), axis.title.x=theme_blank(), axis.ticks = theme_blank(), aspect.ratio = 16/5, axis.text.y = theme_blank(), axis.title.y=theme_blank() )
scatter <- qplot(x,y, data=xy) + scale_x_continuous(limits=c(min(x),max(x))) + scale_y_continuous(limits=c(min(y),max(y)))
none <- qplot(x,y, data=xy) + geom_blank()
Run Code Online (Sandbox Code Playgroud)
并使用 …
我JointPlot从一组存储在大熊猫中的"观察计数与浓度"中绘制了一个Seaborn DataFrame.我想在现有边际之上覆盖(在同一组轴上)每个浓度的"预期计数"的边际(即:单变量分布),以便可以容易地比较差异.
这个图与我想要的非常相似,虽然它有不同的轴,只有两个数据集:

以下是我的数据如何布局和相关的示例:
df_observed
x axis--> log2(concentration): 1,1,1,2,3,3,3 (zero-counts have been omitted)
y axis--> log2(count): 4.5, 5.7, 5.0, 9.3, 16.0, 16.5, 15.4 (zero-counts have been omitted)
Run Code Online (Sandbox Code Playgroud)
df_expected
x axis--> log2(concentration): 1,1,1,2,2,2,3,3,3
Run Code Online (Sandbox Code Playgroud)
因此,覆盖在其df_expected上方的分布df_observed将表明每个浓度中缺少计数的位置.
我现在有什么
在每个浓度下观察到的计数的联合图分别在每个浓度 下的预期计数的联合图.我希望这个图的边缘覆盖在上面的联合图的边缘之上
PS:我是Stack Overflow的新手,所以任何有关如何更好地提问的建议都将得到感谢.此外,我已经广泛搜索了我的问题的答案,但无济于事.此外,Plotly解决方案同样有用.谢谢
我想用散点图的上方和右边的直方图制作漂亮的散点图,因为在seaborn中可以使用jointplot:
我正在寻找有关如何实现这一目标的建议。实际上,我在安装熊猫时遇到了一些麻烦,而且我不需要整个Seaborn模块
我需要生成一个类似于本示例中显示的图像:
所不同的是,代替具有以二维分散的点,我有numpy的的histogram2d生成并与使用绘制一个二维直方图imshow和gridspec:
如何将此 2D 直方图投影到水平和垂直直方图(或曲线)中,使其看起来对齐,就像第一张图像一样?
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
data = # Uploaded to http://pastebin.com/tjLqM9gQ
# Create a meshgrid of coordinates (0,1,...,N) times (0,1,...,N)
y, x = np.mgrid[:len(data[0, :, 0]), :len(data[0, 0, :])]
# duplicating the grids
xcoord, ycoord = np.array([x] * len(data)), np.array([y] * len(data))
# compute histogram with coordinates as x,y
h, xe, ye = np.histogram2d(
xcoord.ravel(), ycoord.ravel(),
bins=[len(data[0, 0, :]), len(data[0, :, 0])], …Run Code Online (Sandbox Code Playgroud) 我想要 Matplotlib 中的一个函数类似于Matlab 的“scatterhist”函数,它采用“x”和“y”轴的连续值,加上一个分类变量作为输入;并生成一个散点图,其中包含边际 KDE 图和两个或多个不同颜色的分类变量作为输出:
我在 Matplotlib 中
找到了带有边缘直方图的散点图示例,在 Seaborn jointplot 中找到了边缘直方图,在 Matplotlib 中找到了重叠直方图,在 Matplotib 中找到了边缘 KDE 图;但我还没有找到任何将散点图与边际 KDE 图结合起来并用颜色编码来指示不同类别的示例。
如果可能的话,我想要一个使用“vanilla”Matplotlib而不使用Seaborn的解决方案,因为这将避免依赖性并允许使用标准Matplotlib命令完全控制和自定义绘图外观。
我打算尝试根据上面的例子写一些东西;但在此之前,我想检查一下类似的功能是否已经可用,如果没有,那么将不胜感激有关最佳使用方法的任何指导。
histogram ×3
matplotlib ×3
python ×3
scatter-plot ×2
ggplot2 ×1
kde-plasma ×1
margin ×1
numpy ×1
overlay ×1
pandas ×1
r ×1
seaborn ×1