ggplot geom_point忽略未知的美学:文本问题?

时间:2017-03-23 11:04:38

标签: r text ggplot2

我正在生成SVG方面图表。我希望悬停在点上方时出现工具提示。我在ggplot / geom_point中使用text美学来制作工具提示文本。产生警告...... Warning: Ignoring unknown aesthetics: text。尽管有警告,但实际上它确实产生了一个工具提示,正如我在sprintf geom_point中所定义的那样。但是,一旦图表中的构面数超过21,工具提示仅显示一个点的子集。这似乎不可靠。但是,删除text美学总是导致所有点的所有点的defult工具提示。当包含text美学时,生成的工具提示是默认文本和我定义的定制文本的组合,看起来像这样...... screenshot of tooltip ...不理想,但至少包含信息我想要显示,特别是Rate /'000作为实际值而不是日志值。

我应该避免使用此功能,还是有更好,更可靠的方法来实现这种效果?

    p <- ggplot(data=df.data_chart_category
               ,aes(x=TourDate, y=rate_per_thousand_lifts, group=key, colour=factor(key))
               ,environment = environment()
        ) +
        geom_point(aes(size = size, text = sprintf("Rate/'000: %s<br>Misses: %s<br>Hits: %s<br>Total Lifts: %s", rate_per_thousand_lifts, misses, hits, total_tour_count)), alpha=0.4) +
        scale_size(name = "Bin count", breaks = c(10, 50, 100, 500, 800, 1000), range = c(1,12)) +
        scale_color_manual("", values = c("Lifter1" = "red", "Lifter2" = "green", "Lifter3" = "lightblue", "Lifter4" = "purple", "NoLifter" = "cyan", "GPS" = "darkgrey")) +
        guides(colour = guide_legend(override.aes = list(size=10))) +
        facet_wrap(as.formula(paste("~", facet_wrap_column_name)), ncol=number_of_facet_columns) +
        labs(x = x_axis_label, y = snr_y_axis_label, title = snr_chart_title, subtitle = snr_chart_subtitle, caption = snr_chart_caption, color="Lifter") +
        theme_few() +
        theme(axis.text.x = element_text(angle=90, vjust=-0.01)) + 
        theme(axis.title = element_text(size = axis_font_size)) + 
        theme(plot.title = element_text(color = '#666666', 
                                  face = 'bold',
                                  size = title_font_size,
                                  hjust = 0)) + 
        scale_y_log10()

    pp <- ggplotly(p)
    htmlwidgets::saveWidget(widget=pp, file="index.html", selfcontained=FALSE)

4 个答案:

答案 0 :(得分:1)

plotly工具提示的问题通常是固定的,用于构建绘图对象并在其中摆弄text

for (i in 1:nrow(df.data_chart_category)){
    pp$x$data[[i]]$text <- c(pp$x$data[[i]]$text, "") 
}

在这种情况下检查它是否有效是很难的,因为我们没有原始数据框或可重复的示例。

答案 1 :(得分:1)

我认为这里的解决方案是不正确的,因为从geom_pointgeom_vline(我正在使用)的文本属性完全有效的角度来看,这显然是一个错误。 ggplotly,所以我对此的解决方案是:

gg <- gg + suppressWarnings(geom_point(aes(size = size, text = sprintf("Rate/'000: %s<br>Misses: %s<br>Hits: %s<br>Total Lifts: %s", rate_per_thousand_lifts, misses, hits, total_tour_count)), alpha=0.4))

答案 2 :(得分:1)

我意识到这已经很老了,但是我找到了一个对我有用的解决方案。

在尝试更新tooltips = "text"中的ggplotly()参数时,我一直遇到这个问题,由于某种原因它无法使用ggplot的映射进行更新时,我感到沮丧。

我发现一件奇怪的事情是,由于某种原因,stat = "sum"不会更新工具提示中的文本,并且在生成图时会返回错误Ignoring unknown aesthetics: text。但是,stat = "count"stat = "identity"都可以正常工作。

答案 3 :(得分:-1)

我的例子有点像我预期的那样工作。我真的不了解如何设置定制的工具提示。我发布了一个工作示例here。该示例的数据仍可在TooltipNotWorkingData.txt

找到

主要问题与我的工具提示参数放置有关。

    p <- ggplot(data=df.data_chart_category
               ,aes(x=calendar_day, y=rate_per_thousand, group=key, colour=factor(key), text = tooltip, onclick = clickjs)
               ,environment = environment()
        )

它应该是ggplot / aes的一部分,而不是geom_point / aes。需要在ggplotly调用pp <- ggplotly(p, tooltip = "tooltip")中引用工具提示来覆盖默认工具提示。

我仍然遇到某些尺寸图表上工具提示显示的问题,我在SO here上打开了一个新问题。