Это идеальное использование для регулярных выражений:
>>> import re
>>> re.match(r"(.*)\.com", "hello.com").group(1)
'hello'
Здесь я вижу две проблемы. Во-первых, tableGrob
является функцией для создания grob из data.frame. Но вы уже создали свою таблицу, вам не нужна эта функция. Но ggtexttable
возвращает объект ggplot, но вам нужен grob, поэтому вам нужно использовать ggplotGrob
, чтобы превратить этот объект ggplot в то, что вы можете использовать с annotation_custom
.
Вторая проблема заключается в том, диапазон, определенный для ваших значений x. Поскольку ваши данные отформатированы как вектор даты, эти значения сохраняются как количество дней с 1970-01-01, поэтому значения 1.5 и 1.8 находятся вне диапазона того, что вы на самом деле рисуете. Вы можете видеть свой фактический диапазон с помощью
range(as.numeric((HUC_df1$stdate)))
# [1] 11296 11298
. Таким образом, устраняя эти две проблемы, вы хотите, чтобы этот пример был
HUC1+annotation_custom(ggplotGrob(HUC1_table), xmin=11296,
xmax=11298,
ymin=200, ymax=300)