我有一个“因素”,浮点数和整数的熊猫数据框。我想使用条件变量和对分类变量进行分组,使“ 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})
我想绘制以下内容(R格码示例)
每个级别的c1的x1与x2(晶格代码)
xyplot(x1 ~ x2 | c1, data = df)
带有“全局”图例c2(符号或颜色)的每个c1级别的x1与x2
xyplot(x1 ~ x2 | c1, groups = c2, data = df)
每个c2的x1直方图
hist (~x1 | c1, data = df)
我还尝试制作“条件化”轮廓图,例如此处生成的轮廓图(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(我把它们弄乱了-发现它们也令人沮丧和限制)。
谢谢!兰德尔
Seaborn是我发现的用于在python中进行多面图绘制的最有效的库。它是围绕matplotlib的熊猫感知包装器,可为您处理所有子绘图,并更新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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句