2016-07-19 2 views
1

Я создал один графический график, используя сюжетную линию в Shiny. Теперь, в линейном графике, если я хочу добавить метки, они перекрываются с линией, что затрудняет ее понимание.R: Линейная диаграмма перекрывается текстовыми метками

Я использую следующий код:

 a = paste("$",prettyNum(de$Amount, big.mark = ",", scientific = FALSE), sep = "") 
     f <- list(

     size = 14, 
     color = "Black", 
     fontface="bold" 
    ) 
     xQuartAxis <- list(
     title = "Month") 
     yQuartAxis <- list(
     title = "Amount in $") 
     plot_ly(
     x = as.vector(de$Month), 
     y = de$Amount, 
     text = paste(a), hoverinfo = "text", textinfo="text",showlegend = FALSE, 
     name = "Amount Paid", 
     mode = "lines+text" 
    )%>% 

     layout(title=paste("Monthly Amount paid by", clientName,"for the year",selectedYear, sep = " ") ,titlefont =f,t = 150, xaxis = xQuartAxis, yaxis = yQuartAxis) 
}) 

Я получаю этот выход:

Click To View Output

Пожалуйста, скажите мне, как я могу отделить текст от линии графика для лучшей видимости?

Спасибо :)

+0

Попробуйте 'geom_label' для сплошного фона, или' ggrepel :: geom_text_repel'. – alistaire

+0

Могу ли я добавить geom_label в графиках графика? –

+0

Yikes, я устал. Но да, на самом деле, если вы используете 'ggplotly'. Или просто покажите информацию в всплывающем окне, что может быть более естественным для сюжета. – alistaire

ответ

1

Я бы предложил сделать номер выделяется относительно линии. Сначала сделайте линию прозрачной (скажем, alpha = 0.2). Линия все еще будет видна для вашего глаза, но цифры будут подсвечены.

Во-вторых, усечь числа до тысяч в соответствии с у-шкалой. Вам не нужно отображать столько цифр для маркеров точки.

Вот версия ggplotly, так как я не уверен, как отдельно устанавливать непрозрачность для текстовых маркеров и строки с помощью plot_ly. Вы можете добавить, скажем, opacity=0.3 внутри plot_ly(), но это также делает прозрачные текстовые маркеры.

library(scales) 
library(ggplot2) 
library(plotly) 

# Fake data 
set.seed(395875) 
de = data.frame(Month=factor(month.abb, levels=month.abb), Amount=rnorm(12, 12000, 1000)) 

ggplotly(
    ggplot(de, aes(Month,Amount)) + 
    geom_line(aes(group=1), alpha=0.2, color="blue") + 
    geom_text(aes(label=paste0("$", sprintf("%1.1f", Amount/1000))), size=3.5) + 
    theme_bw() + 
    scale_y_continuous(limits=c(0, max(de$Amount)), breaks=seq(0,15000,5000), 
         labels=paste0("$",seq(0,15000,5000)/1000,"k")) + 
    labs(y="Amount ($000)") 
) 

enter image description here

+0

Спасибо, да, я только что нашел в plot_ly opacity, чтобы сделать прозрачность. Спасибо за ваше драгоценное время и советы. –

Смежные вопросы