我不知道这个问题是否在这里,但由于它是具体的并且(我认为)它有一个答案,所以我在这里问它:
我试图了解某些行为ggplot
(通过plotnine
python,它实际上是 的副本ggplot
)。具体来说,我试图了解group
andcolor
参数的行为,例如在aes()
ofggplot()
和之间。geom_line()
我们有这些数据:
data = pd.DataFrame({'Period': {0: '2019/07', 1: '2019/07', 2: '2019/07', 3: '2019/08', 4: '2019/09', 5: '2019/09', 6: '2019/10', 7: '2019/10', 8: '2019/11', 9: '2019/11', 10: '2019/12', 11: '2019/12', 12: '2019/12', 13: '2020/01', 14: '2020/01', 15: '2020/01', 16: '2020/02', 17: '2020/02', 18: '2020/02', 19: '2020/03', 20: '2020/03', 21: '2020/03'},
'Category': {0: 'A', 1: 'B', 2: 'C', 3: 'A', 4: 'A', 5: 'C', 6: 'A', 7: 'C', 8: 'A', 9: 'C', 10: 'A', 11: 'B', 12: 'C', 13: 'A', 14: 'B', 15: 'C', 16: 'A', 17: 'B', 18: 'C', 19: 'A', 20: 'B', 21: 'C'},
'Income': {0: 350.6, 1: 52.4, 2: 33.4, 3: 105.5, 4: 203.4, 5: 114.7, 6: 272.3, 7: 157.4, 8: 288.0, 9: 24.1, 10: 345.5, 11: 27.2, 12: 10.8, 13: 187.8, 14: 111.7, 15: 49.2, 16: 293.1, 17: 77.7, 18: 132.8, 19: 221.8, 20: 27.6, 21: 87.0}})
当我尝试绘制它时:
(ggplot(data, aes(x="Period", y="Income", color="Category"))
+ geom_line())
它给出了这个错误:
PlotnineWarning: geom_path: Each group consist of only one observation. Do you need to adjust the group aesthetic?
错误似乎在哪里,但实际上我可以看到这是因为在给定特定and的情况下某些观察值each group has one observation
没有值。而且我知道每个组只有一个观察值,因为我将它分组为and ,但我不知道错误指的是哪种分组。Income
Category
Period
data
Period
Category
我解决了添加论点group="Category"
:
(ggplot(data, aes(x="Period", y="Income", color="Category", group = "Category"))
+ geom_line())
但是,如果我将颜色和组参数更改为geom_line(aes())
这样:
(ggplot(data, aes(x="Period", y="Income"))
+ geom_line(aes(color="Category", group = "Category")))
它会给我完全相同的情节。为什么?在不同的地方调用它有什么区别aes()
?
另外,我应该group = 1
在哪里打电话?因为当我尝试使用它时,data
我无法理解 ggplot 实际在做什么:
(ggplot(data, aes(x="Period", y="Income", color="Category", group = 1))
+ geom_line())