R:折线图与文本标签重叠
R: Line chart is overlapping with text labels
我在 Shiny 中使用 plotly 创建了一个折线图。现在,在折线图中,如果我想添加标签,它们会与直线重叠,这很难理解。
我正在使用以下代码:
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)
})
我得到这个输出:
请问如何将文本与折线图分开以获得更好的可见性?
谢谢 :)
我建议让数字相对于直线突出。首先,使线条透明(例如,alpha=0.2)。该线仍然可见以引导您的眼睛,但数字将突出显示。
其次,将数字截断为千以匹配 y 尺度。您不需要为点标记显示那么多数字。
这是一个 ggplotly
版本,因为我不确定如何分别设置文本标记和带有 plot_ly
的行的不透明度。例如,您可以在 plot_ly()
中添加 opacity=0.3
,但这也会使文本标记变得透明。
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 ([=10=]0)")
)
我在 Shiny 中使用 plotly 创建了一个折线图。现在,在折线图中,如果我想添加标签,它们会与直线重叠,这很难理解。
我正在使用以下代码:
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)
})
我得到这个输出:
请问如何将文本与折线图分开以获得更好的可见性?
谢谢 :)
我建议让数字相对于直线突出。首先,使线条透明(例如,alpha=0.2)。该线仍然可见以引导您的眼睛,但数字将突出显示。
其次,将数字截断为千以匹配 y 尺度。您不需要为点标记显示那么多数字。
这是一个 ggplotly
版本,因为我不确定如何分别设置文本标记和带有 plot_ly
的行的不透明度。例如,您可以在 plot_ly()
中添加 opacity=0.3
,但这也会使文本标记变得透明。
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 ([=10=]0)")
)