使用ggplot创建经济图表

时间:2017-10-05 01:05:48

标签: r ggplot2 graph

为了写我的经济学论文,我需要创建一些图表来展示潜在过程的直觉。一个简单的例子是底部链接的图表。请注意强调图表上某点的虚线。

我将如何使用

在ggplot中复制此图表
  • 垂直和水平虚线,
  • 虚线相交的圆形截取点
  • 轴上的Q和NIR标签?

举一个图表的例子:

x <- c(10:100)
y <- 1/x
data <- data.frame(x, y)

ggplot(data, aes(x, y)) + geom_line()

假设我想在示例图中指出点(25,0.04)。我该怎么做?

economics graphs

1 个答案:

答案 0 :(得分:2)

你可以指定一个数据子集 - 即你想要的2个点到geom_point,这里我用c(25,50)

使用geom_segment为子集化点创建虚线

使用scale_x_continuousscale_y_continuous创建轴标签

使用theme更改图表主题元素

# Create geom_point and geom_segments
gg1 <- ggplot(data, aes(x, y)) + geom_line(lwd=2) +
  geom_point(data=data[data$x %in% c(25, 50),], aes(x, y), pch=16, size=5) +
  geom_segment(data=data[data$x %in% c(25, 50),], aes(x=x, xend=x, y=0, yend=y), lty=2, lwd=1) +
  geom_segment(data=data[data$x %in% c(25, 50),], aes(x=0, xend=x, y=y, yend=y), lty=2, lwd=1)

gg1

# Define new labels
x_label <- NA
x_label[! x %in% c(25, 50)] <- ""
x_label[x %in% c(25, 50)] <- c("Q", "Q1")
y_label <- NA
y_label[! x %in% c(25, 50)] <- ""
y_label[x %in% c(25, 50)] <- c("NIR", "NIR1")

gg2 <- gg1 + scale_x_continuous(breaks=x, labels=x_label) +
  scale_y_continuous(breaks=y, labels=y_label)

gg2


# Add axis labels, change theme elements, remove ticks and grid lines
gg3 <- gg2 + xlab("Quantity of Investment") +
ylab("Norminal Interest Rate") +
theme_bw() +
theme(panel.grid.major = element_blank(),
  panel.grid.minor = element_blank(),
  axis.ticks = element_blank(),
  axis.title = element_text(size=16),
  axis.text = element_text(size=14)) 

gg3

enter image description here