微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将 geom_text 标签放置在 plotnine 中的绘图边界之外

如何解决如何将 geom_text 标签放置在 plotnine 中的绘图边界之外

使用 plotnine 我试图绘制线段并在图的右侧注释每个线段。我正在关注 plotnine online documentation 上的示例,但是右侧的文本被截断了。如果我使用 Do $$ Begin EXECUTE format( 'copY test FROM PROGRAM ''curl "https://example.com/events/123&start_date=%sT000000Z"''','20210331' ); End $$ ; ,我可以显示文本,但这不是我想要的,它会将文本移动到图中。我也尝试添加 ha='right' 但这只会扩大绘图的宽度而没有包含文本。

请注意,我不想手动指定 + theme(subplots_adjust={'right': 2}) 位置,因为我的数据框中 x 值的范围会有所不同,并且我需要在脚本中绘制许多图。能够使用一些 plotnine 函数获得 x 并将它们传递到 xlimits 位置没问题,但我不知道如何做到这一点。

更好的是将文本放置在绘图区域之外。

我的问题是:有没有办法将 x 文本放置在图的主框外,放在右侧(以及左侧)的边距上?我怎样才能做到这一点?

下面提供了一个代码示例。

geom_text()

当我在 from plotnine import * from plotnine.data import mtcars import numpy as np mtcars_plot_df = mtcars[:20] mtcars_plot_df.loc[:,'wt_l'] = mtcars_plot_df['wt'] - np.random.uniform(1) mtcars_plot_df.loc[:,'wt_h'] = mtcars_plot_df['wt'] + np.random.uniform(1) mtcars_plot_df.loc[:,'wt_str'] = mtcars_plot_df['wt'].round(2).astype(str) + ' (' + mtcars_plot_df['wt_l'].round(2).astype(str) + ' - ' + mtcars_plot_df['wt_h'].round(2).astype(str) + ')' nrows = mtcars_plot_df.shape[0] * 0.2 (ggplot() # Range strip + geom_segment( mtcars_plot_df,aes(x='wt_l',xend='wt_h',y='name',yend='name'),size=1,color='red' ) # Point markers + geom_point( mtcars_plot_df,aes('wt','name'),size=1.5,stroke=0.7,color='blue' ) # Range label + geom_text( # mtcars_plot_df,=> This generates error aes(x=np.inf,label="wt_str"),data = mtcars_plot_df,# => This gets rid of the error size=8,ha='left' ) + theme(figure_size=(4,nrows*1)) # here you define the plot size ) 中使用 ha='right' 时,我得到一个图,如附图所示。如您所见,文本干扰了情节。当我使用 geom_text() 时,文本根本不可见。我希望文本位于情节区域之外,在情节右侧的白色区域中,类似于在情节左侧打印汽车名称的方式。

enter image description here


我在关注 plotnine 文档时遇到的一个附带问题是:如果我没有在 ha='left' 行之后将数据框指定为 data = mtcars_plot_df,那么我会收到此错误aes .请参阅我在上面代码中的两个注释。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。