如何解决如何将 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()
时,文本根本不可见。我希望文本位于情节区域之外,在情节右侧的白色区域中,类似于在情节左侧打印汽车名称的方式。
我在关注 plotnine 文档时遇到的一个附带问题是:如果我没有在 ha='left'
行之后将数据框指定为 data = mtcars_plot_df
,那么我会收到此错误:aes
.请参阅我在上面代码中的两个注释。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。