我如何(如果可能的话)将棒棒糖棒添加到点图中?
例如,
plot(1:10, sin(1:10))
如何从十个点中的每个点到x轴添加垂直线(棒棒糖棒)?我是否需要编写一个绘制每根棒的函数?
答案 0 :(得分:3)
您有ggplot2
标记,但使用基本示例,因此我会同时显示这两个标记。
数据:
df <- data.frame(x = 1:10, y = sin(1:10))
基础绘图使用'h'
作为aplot类型,绘制“直方图”行,参见?plot
。然后,您可以在其上添加点。
plot(df$x, df$y, type = 'h')
points(df$x, df$y, pch = 20)
abline(h = 0, lty = 2)
ggplot2
允许您在geom_segment
ggplot(df, aes(x, y)) +
geom_point() +
geom_segment(aes(x = x, y = 0, xend = x, yend = y)) +
geom_hline(yintercept = 0, lty = 2)
答案 1 :(得分:2)
答案 2 :(得分:0)
因为我们不想使用ggalt::geom_lollipop()
:
devtools::install_github("hrbrmstr/ggalt")
df <- read.csv(text="category,pct
Other,0.09
South Asian/South Asian Americans,0.12
Interngenerational/Generational,0.21
S Asian/Asian Americans,0.25
Muslim Observance,0.29
Africa/Pan Africa/African Americans,0.34
Gender Equity,0.34
Disability Advocacy,0.49
European/European Americans,0.52
Veteran,0.54
Pacific Islander/Pacific Islander Americans,0.59
Non-Traditional Students,0.61
Religious Equity,0.64
Caribbean/Caribbean Americans,0.67
Latino/Latina,0.69
Middle Eastern Heritages and Traditions,0.73
Trans-racial Adoptee/Parent,0.76
LBGTQ/Ally,0.79
Mixed Race,0.80
Jewish Heritage/Observance,0.85
International Students,0.87", stringsAsFactors=FALSE, sep=",", header=TRUE)
library(ggplot2)
library(ggalt)
library(scales)
gg <- ggplot(df, aes(y=reorder(category, pct), x=pct))
gg <- gg + geom_lollipop(point.colour="steelblue", point.size=3, horizontal=TRUE)
gg <- gg + scale_x_continuous(expand=c(0,0), labels=percent,
breaks=seq(0, 1, by=0.2), limits=c(0, 1))
gg <- gg + labs(x=NULL, y=NULL,
title="SUNY Cortland Multicultural Alumni survey results",
subtitle="Ranked by race, ethnicity, home land and orientation\namong the top areas of concern",
caption="Data from http://stephanieevergreen.com/lollipop/")
gg <- gg + theme_minimal(base_family="Arial Narrow")
gg <- gg + theme(panel.grid.major.y=element_blank())
gg <- gg + theme(panel.grid.minor=element_blank())
gg <- gg + theme(axis.line.y=element_line(color="#2b2b2b", size=0.15))
gg <- gg + theme(axis.text.y=element_text(margin=margin(r=-5, l=0)))
gg <- gg + theme(plot.margin=unit(rep(30, 4), "pt"))
gg <- gg + theme(plot.title=element_text(face="bold"))
gg <- gg + theme(plot.subtitle=element_text(margin=margin(b=10)))
gg <- gg + theme(plot.caption=element_text(size=8, margin=margin(t=10)))
gg