我有一个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})
我想绘制以下内容(R lattice代码示例):
c1的每个级别上,x1与x2的关系(lattice代码)
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
我已经阅读了这些示例:
然而,我希望布局是根据分类条件(或“按”变量)中的级数生成的。即指定列数,行数将基于级数计算。
感谢任何好的建议或正确方向的步骤。我不想使用rpy2或python ggplot(我尝试过它们-发现它们令人沮丧且限制太多)。
谢谢! Randall