R Lattice喜欢Python,Pandas和Matplotlib的情节

Ran*_*win 5 python r matplotlib lattice pandas

我有一个"因素",浮点数和整数的熊猫数据框.我想在分类变量上使用条件和分组来制作"R Lattice",就像它上面的情节一样.我已广泛使用R并编写了自定义面板函数来获得我想要的格式,但我正在努力使用matplotlib来简洁地完成相同类型的绘图.我正在玩布局和subplot2grid,但似乎无法正确使用它.

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

nRows = 500
df = pd.DataFrame({'c1' : np.random.choice(['A','B','C','D'], size=nRows),
               'c2' : np.random.choice(['P','Q','R'], size=nRows),
               'i1' : np.random.randint(20,50, nRows),
               'i2' : np.random.randint(0,10, nRows),
               'x1' : 3 * np.random.randn(nRows) + 90,
               'x2' : 2 * np.random.randn(nRows) + 89})
Run Code Online (Sandbox Code Playgroud)

我想绘制如下的东西(R格子代码示例)

每个c1级别的x1与x2(格子码)

xyplot(x1 ~ x2 | c1, data = df)
Run Code Online (Sandbox Code Playgroud)

具有"全局"图例c2(符号或颜色)的每个c1级别的x1与x2

xyplot(x1 ~ x2 | c1, groups = c2, data = df)
Run Code Online (Sandbox Code Playgroud)

每个c2的x1直方图

hist (~x1 | c1, data = df)
Run Code Online (Sandbox Code Playgroud)

我也试图制作"条件"等高线图,例如这里产生的等值线图(1.4.4.4)

https://scipy-lectures.github.io/intro/matplotlib/matplotlib.html

我已经阅读了这些例子:http: //nbviewer.ipython.org/github/fonnesbeck/Bios366/blob/master/notebooks/Section2_4-Matplotlib.ipynb

但是,我希望从分类调节(或"by")变量中的级别数生成布局.即指定列数,并根据数字级别计算行数.

在正确的方向上欣赏任何好的建议或步骤.我不想使用rpy2或python ggplot(我搞砸了它们 - 发现它们令人沮丧并限制它们).

谢谢!兰德尔

b10*_*10n 8

Seaborn是我在python中创建分面图的最有效的库.它是一个围绕matplotlib的pandas意识包装器,它为您处理所有子图,并更新matplotlib样式以使其看起来更现代.它产生了一些非常可爱的输出.

分面是使用库的网格部分完成的.

它与R的工作方式略有不同,因为您首先创建网格并将数据与所需的构面,行,列,颜色等一起传递给它.然后,您将绘图函数映射到该网格,并将所有必需的参数传递给映射的绘图功能.

#scatter plot one factor
import seaborn as sns
grid1 = sns.FacetGrid(df, col='c1')
grid1.map(plt.scatter, 'x1', 'x2')


#scatter plot with column and hue factor
grid2 = sns.FacetGrid(df, col='c1', hue='c2')
grid2.map(plt.scatter, 'x1', 'x2')


#histogram with one factor
grid3 = sns.FacetGrid(df, col='c1')
grid3.map(plt.hist, 'x1', alpha=.7)
Run Code Online (Sandbox Code Playgroud)