我需要创建一个单一的图表,其中包括六个时间图(年份v预算),一个为每个以下城市…
city1、city2、city3、city4、city5和city6。
年份(1860-1910)需要在x轴上,预算(从-$100到800美元)在y轴上。
我使用以下代码在查看器面板中显示六个图形:
par(mfrow=c(2,3))我用这段代码来生成图表,写了六次(每个城市一个)……
plot.default(mydata$budget[mydata$city=="city1"],
mydata$year[mydata$city=="city1"], xlim=c(1860,1910),
ylim=c(-100,800), xlab="City1", ylab="Budget")然而,我遇到的问题是数据没有出现在生成的图形中。换句话说,每次我执行上面的代码时,我都会在查看器面板中得到一个空白图形(具有正确的x和y限制)。我如何让数据出现在图表中,以便每年都有一个点,并用一条线将每个点连接到下一个点?
这是一些数据..。
city aid_sums year budget
1 Boston 0 1860 1.7764366
2 Boston 0 1861 3.5162529
3 Boston 0 1862 1.6834916
4 Boston 0 1863 3.5736373
5 Boston 0 1864 4.4076780
6 Boston 0 1865 5.0411372
7 Boston 0 1866 4.6084619
8 Boston 0 1867 3.6368014
9 Boston 0 1868 2.5624348
10 Boston 0 1869 2.3336493
11 Boston 0 1870 2.3075819 发布于 2021-11-28 20:44:41
在一条plot语句中,这些值的顺序必须是X,然后是Y,或者您需要将它们指定为"x =“和"y =”。注:通过输出虚构的值。
# Specify Y and X
plot.default(y = mydata$budget[mydata$city=="city1"],
x = mydata$year[mydata$city=="city1"], xlim=c(1860,1910),
ylim=c(-100,800), xlab="city1", ylab="Budget", type = "l")
# Make them the right order: X, then Y
plot.default(mydata$year[mydata$city=="city1"],
mydata$budget[mydata$city=="city1"], xlim=c(1860,1910),
ylim=c(-100,800), xlab="city1", ylab="Budget", type = "b")但是,如果您的数据是长格式的,那么使用ggplot()和facet_wrap一次性生成它们可能会更容易一些。
类似于:
library(tidyverse)
ggplot(mydata) +
geom_line(aes(x = year, y = budget, colour = city)) +
geom_point(aes(x = year, y = budget, colour = city)) +
scale_x_continuous(limits = c(1860, 1910), breaks = seq(from = 1860, to = 1910, 10)) +
scale_y_continuous(limits = c(-100, 800)) +
facet_wrap(~city)

https://stackoverflow.com/questions/70146938
复制相似问题