You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Plotnine图例无法左对齐求助:设置legend_box_just="left"无效

Plotnine 图例与标题左对齐解决方案

使用Plotnine 0.13.0版本搭配Python 3.11时,添加legend_box_just="left"参数后,水平图例仍无法和标题左对齐——当前图例位于顶部但居中显示,未与左侧标题对齐。

原代码如下:

import pandas as pd
import numpy as np
from plotnine import ggplot, aes, geom_bar, labs, theme_minimal, theme, element_blank

df = pd.DataFrame({
    'Date':  pd.date_range(start="2024-01-01", periods=11, freq="W").repeat(3),
    'Variable': ['A', 'B', 'C'] * 11,
    'Value': np.random.choice(range(50), 33)
})

plot = (ggplot(df, aes(x='Date', y='Value', fill='Variable'))
        + geom_bar(stat="identity")
        + labs(title="Title")
        + theme_minimal()
        + theme(
            legend_title=element_blank(),
            legend_direction="horizontal", legend_box="horizontal",
            legend_position="top", legend_box_just="left")
        )

plot.show()

解决方法

要实现图例与标题左对齐,需同时调整图例容器的锚点位置和标题的对齐方式:

  • 设置标题左对齐,确保标题和图例的对齐基准一致
  • 指定图例容器的左上角锚点,让图例整体贴合绘图区域左侧
  • 保留legend_box_just="left"确保图例内部元素左对齐

修改后的代码:

import pandas as pd
import numpy as np
from plotnine import ggplot, aes, geom_bar, labs, theme_minimal, theme, element_blank, element_text

df = pd.DataFrame({
    'Date':  pd.date_range(start="2024-01-01", periods=11, freq="W").repeat(3),
    'Variable': ['A', 'B', 'C'] * 11,
    'Value': np.random.choice(range(50), 33)
})

plot = (ggplot(df, aes(x='Date', y='Value', fill='Variable'))
        + geom_bar(stat="identity")
        + labs(title="Title")
        + theme_minimal()
        + theme(
            legend_title=element_blank(),
            legend_direction="horizontal", 
            legend_box="horizontal",
            legend_position="top", 
            legend_box_just="left",
            # 标题左对齐
            plot_title=element_text(hjust=0),
            # 图例容器左上角对齐绘图区域
            legend_justification=(0, 1)
        )
        )

plot.show()

参数说明

  • legend_justification=(0,1):控制图例容器在绘图区域的锚点位置,(0,1)代表左上角对齐
  • plot_title=element_text(hjust=0):设置标题水平对齐方式为左对齐(hjust=0对应左对齐,1对应右对齐)
  • legend_box_just="left":保证图例内部的颜色块、标签等元素在容器内左对齐

内容的提问来源于stack exchange,提问作者Jon Aldekoa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 18:25:20