python - plotnine/ggplot - 改变图例位置
问题描述
我有这个数据框:
df = pd.DataFrame({'ymin': {0: 0.0,
1: 0.0,
2: 0.0,
3: 0.0,
4: 0.511,
5: 0.571,
6: 0.5329999999999999,
7: 0.5389999999999999},
'ymax': {0: 0.511,
1: 0.571,
2: 0.533,
3: 0.539,
4: 1.0,
5: 1.0,
6: 1.0,
7: 1.0},
'xmin': {0: 0.0,
1: 0.14799999999999996,
2: 0.22400000000000003,
3: 0.5239999999999999,
4: 0.0,
5: 0.14799999999999996,
6: 0.22400000000000003,
7: 0.5239999999999999},
'xmax': {0: 0.148,
1: 0.22399999999999998,
2: 0.524,
3: 1.001,
4: 0.148,
5: 0.22399999999999998,
6: 0.524,
7: 1.001},
'variable': {0: 'A', 1: 'A', 2: 'A', 3: 'A', 4: 'B', 5: 'B', 6: 'B', 7: 'B'}})
我在哪里绘制这个:
(ggplot(df, aes(ymin = "ymin", ymax = "ymax",
xmin = "xmin", xmax = "xmax", fill = "variable"))
+ geom_rect(colour = "grey", alpha=0.7))
我希望将图例的位置更改为与情节的位置相同:蓝色向上和红色底部。永远A
是红色的,B
永远是蓝色的
解决方案
可能有一种更标准的方法来做到这一点,但这里有一个快速解决问题的方法:
更改变量的顺序
手动分配颜色(如果对您的情况很重要,您也可以查找确切的颜色代码并将其替换为颜色名称)
df = df.assign(variable = pd.Categorical(df['variable'], ['B', 'A'])) (ggplot(df, aes(ymin = "ymin", ymax = "ymax", xmin = "xmin", xmax = "xmax", fill = "variable"))+ geom_rect(colour = "grey", alpha=0.7)+ scale_fill_manual(values = ["blue", "red"]))
输出如下所示:
推荐阅读
- python - 计算段落python每个单词中的字母数
- matlab - 如何使用 MATLAB 将字符串变量保存到 .txt 文件?
- javascript - 我的反应网站在移动浏览器上显示为空白
- java - CELL_TYPE_NUMERIC 无法解析或不是字段
- c# - 从列表中选择特定坐标
- python-3.x - python 3.8 的 pyinstaller 是否有替代方案?
- javascript - 如何处理道具历史位置搜索参数?
- r - 在 R 中创建一个包含重复单元格和计算的连续列
- matlab - 如何将微分方程的函数转换为匿名函数
- css - 如何在 HTML 页面上使用 CSS 将图像放在 H2 标签旁边