【问题标题】:Plotnine : How to remove legend boxes around lines in geom_line()Plotnine:如何在 geom_line() 中删除线周围的图例框
【发布时间】:2021-11-14 06:32:52
【问题描述】:

考虑以下plotnine 情节。如何删除图例中线条周围的伪框(在屏幕截图中圈出)。这些伪框不会出现在 ggplot 中。

我查看了主题中的所有选项,但没有一个能解决问题... https://plotnine.readthedocs.io/en/stable/generated/plotnine.themes.theme.html

import numpy as np
import pandas as pd
from plotnine import *


df = pd.DataFrame({
    'date':pd.date_range('1/1/2000', freq='A', periods=20),
    'a': np.random.uniform(0.01,0.03,20),
    'b': np.random.uniform(0.02,0.04,20),
})

df = pd.melt(df, id_vars=['date'])


p = (ggplot(df,aes(x='date',y='value',color='variable'))
  + theme_light()
  + geom_line(size=1.15)
  + labs(x=None, y=None)
  + scale_x_date(expand=(0,0), breaks=pd.date_range(start='2001-1-1', end='2019-1-1', periods=10), labels=lambda l: [v.strftime("%Y") for v in l])
  + scale_color_manual(('#50C878','#F75394'))
  + theme(
      legend_title=element_blank(),
      legend_direction='horizontal',
      legend_position='bottom',
      legend_box_spacing=0.25,
      legend_background=element_blank(),
      panel_grid_minor = element_blank(),
      panel_grid_major_x = element_blank(),
      panel_border = element_blank(),
  )
)
p

【问题讨论】:

    标签: python plotnine


    【解决方案1】:

    实现所需结果的一个选项是将图例键的颜色设置为“白色”或更一般地通过 `legend_key=element_rect(color = "white") 设置背景颜色:

    import numpy as np
    import pandas as pd
    from plotnine import *
    
    
    df = pd.DataFrame({
        'date':pd.date_range('1/1/2000', freq='A', periods=20),
        'a': np.random.uniform(0.01,0.03,20),
        'b': np.random.uniform(0.02,0.04,20),
    })
    df = pd.melt(df, id_vars=['date'])
    
    p = (ggplot(df,aes(x='date',y='value',color='variable'))
      + theme_light()
      + geom_line(size=1.15)
      + labs(x=None, y=None)
      + scale_x_date(expand=(0,0), breaks=pd.date_range(start='2001-1-1', end='2019-1-1', periods=10), labels=lambda l: [v.strftime("%Y") for v in l])
      + scale_color_manual(('#50C878','#F75394'))
      + theme(
          legend_title=element_blank(),
          legend_key=element_rect(color = "white"),
          legend_direction='horizontal',
          legend_position='bottom',
          legend_box_spacing=0.25,
          legend_background=element_blank(),
          panel_grid_minor = element_blank(),
          panel_grid_major_x = element_blank(),
          panel_border = element_blank()
      )
    )
    p
    

    【讨论】:

    • 完美,谢谢!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-12
    • 2021-04-07
    相关资源
    最近更新 更多