В настоящее время я запускаю цикл для создания нескольких графиков из 1 кадра данных. Каждый график имеет переменный диапазон по оси x (что я и хочу), но я бы хотел только отметить десятилетия. Есть ли способ указать это в моем коде?R график x ось по десятичной петле
Я просмотрел другие столбцы с меткой оси x и нашел способы определения интервалов между метками, но не как указать точные числа для диапазона значений. Одним из решений было:
> axis(1, seq=(1950, 2000, by=10)
Это прекрасно работает, если мои даты начала и окончания десятилетним лет, но они обычно не делают. Я попытался собрать сочетание вариантов, которые я нашел, однако я не могу получить полный код для запуска; Я получаю сообщения об ошибках (например, «нечисловой бинарном аргумент)
Возпроизводимо выдержка из данных:.
> df6 <- structure(list(Year = c("1958", "1959", "1960", "1961", "1962",
"1963", "1964", "1965", "1966", "1967", "1968", "1969", "1970",
"1971", "1972", "1972", "1973", "1973", "1974", "1974", "1975",
"1975", "1976", "1976", "1977", "1977", "1978", "1978", "1979",
"1979", "1980", "1980", "1981", "1981", "1982", "1982", "1983",
"1983", "1984", "1984", "1985", "1985", "1986", "1986", "1987",
"1987", "1988", "1988", "1989", "1989", "1990", "1990", "1991",
"1991", "1992", "1992", "1993", "1993", "1994", "1994", "1995",
"1995", "1996", "1996", "1997", "1997", "1998", "1998", "1999",
"1999", "2000", "2000", "2001", "2001", "2002", "2002", "2003",
"2003", "2004", "2004", "2005", "2005", "2006", "2006", "2007",
"2007", "2008", "2008", "2009", "2009", "2010", "2010", "2011"
), plot = c("FA5", "FA5", "FA5", "FA5", "FA5", "FA5", "FA5",
"FA5", "FA5", "FA5", "FA5", "FA5", "FA5", "FA5", "BR8", "FA5",
"BR8", "FA5", "BR8", "FA5", "BR8", "FA5", "BR8", "FA5", "BR8",
"FA5", "BR8", "FA5", "BR8", "FA5", "BR8", "FA5", "BR8", "FA5",
"BR8", "FA5", "BR8", "FA5", "BR8", "FA5", "BR8", "FA5", "BR8",
"FA5", "BR8", "FA5", "BR8", "FA5", "BR8", "FA5", "BR8", "FA5",
"BR8", "FA5", "BR8", "FA5", "BR8", "FA5", "BR8", "FA5", "BR8",
"FA5", "BR8", "FA5", "BR8", "FA5", "BR8", "FA5", "BR8", "FA5",
"BR8", "FA5", "BR8", "FA5", "BR8", "FA5", "BR8", "FA5", "BR8",
"FA5", "BR8", "FA5", "BR8", "FA5", "BR8", "FA5", "BR8", "FA5",
"BR8", "FA5", "BR8", "FA5", "FA5"), AvgRW = c(0.999, 0.671, 0.638,
0.767, 0.839, 1.072, 1.162, 0.7215, 0.416, 0.3265, 0.464, 1.492,
1.011, 1.0905, 0.933, 1.0755, 1.018, 1.42183333333333, 0.6415,
1.17783333333333, 0.7495, 0.931166666666667, 0.654166666666667,
1.761375, 0.635333333333333, 2.063875, 0.44875, 1.91758333333333,
0.615583333333333, 0.945583333333333, 0.825857142857143, 0.60775,
0.7095, 1.07725, 1.1536875, 1.85278571428571, 1.65311111111111,
2.05792857142857, 1.50425, 2.6515, 1.87955, 2.25066666666667,
2.14577272727273, 2.19533333333333, 1.61231818181818, 1.931,
2.48027272727273, 2.31927777777778, 1.82383336363636, 2.5933,
1.373, 3.03875, 1.36390909090909, 2.66533333333333, 1.38969441666667,
2.70753846153846, 1.39786108333333, 2.53957692307692, 2.14262823076923,
2.98446153846154, 2.37315478571429, 3.24507692307692, 2.37939285714286,
3.23284615384615, 1.85764285714286, 3.59303846153846, 1.98335714285714,
4.03557692307692, 1.34670237857143, 3.45111538461538, 0.710416664285714,
3.47661538461538, 0.657595235714286, 2.96003846153846, 1.3541905,
2.96257692307692, 1.81747621428571, 2.65265384615385, 1.88546428571429,
2.53873076923077, 1.92221428571429, 2.60619230769231, 2.10236907142857,
2.26838461538462, 1.62090476428571, 1.96623076923077, 1.61060714285714,
2.27869230769231, 2.03883335714286, 2.00357692307692, 2.10155130769231,
1.74626923076923, 2.61165384615385), SampDepth = c(1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 3L, 2L,
3L, 3L, 3L, 3L, 4L, 3L, 4L, 4L, 6L, 6L, 6L, 7L, 6L, 7L, 6L, 8L,
7L, 9L, 7L, 10L, 9L, 10L, 9L, 11L, 9L, 11L, 9L, 11L, 9L, 11L,
10L, 11L, 10L, 11L, 12L, 12L, 13L, 12L, 13L, 13L, 13L, 14L, 13L,
14L, 13L, 14L, 13L, 14L, 13L, 14L, 13L, 14L, 13L, 14L, 13L, 14L,
13L, 14L, 13L, 14L, 13L, 14L, 13L, 14L, 13L, 14L, 13L, 14L, 13L,
14L, 13L, 13L, 13L, 13L)), .Names = c("Year", "plot", "AvgRW",
"SampDepth"), row.names = c(1143L, 1162L, 1181L, 1200L, 1219L,
1238L, 1259L, 1281L, 1303L, 1325L, 1348L, 1371L, 1394L, 1417L,
1440L, 1441L, 1464L, 1465L, 1488L, 1489L, 1512L, 1513L, 1536L,
1537L, 1560L, 1561L, 1584L, 1585L, 1608L, 1609L, 1632L, 1633L,
1656L, 1657L, 1680L, 1681L, 1704L, 1705L, 1728L, 1729L, 1752L,
1753L, 1776L, 1777L, 1800L, 1801L, 1824L, 1825L, 1848L, 1849L,
1872L, 1873L, 1896L, 1897L, 1920L, 1921L, 1944L, 1945L, 1968L,
1969L, 1992L, 1993L, 2016L, 2017L, 2040L, 2041L, 2064L, 2065L,
2088L, 2089L, 2112L, 2113L, 2136L, 2137L, 2160L, 2161L, 2184L,
2185L, 2208L, 2209L, 2232L, 2233L, 2256L, 2257L, 2280L, 2281L,
2304L, 2305L, 2328L, 2329L, 2352L, 2353L, 2375L), class = "data.frame")
Текущий код участка (это работа, он просто не имеет правильную оси х этикетки):
> for (i in df6$plot) { #Start loop
#Cut out the data you are working with
plotting <- df6[which(df6$plot == i),]
#Begin plotting
png(filename = paste0("C:\\Users\\User\\Desktop\\", i, type="png")) #Saves graphs
par(mar=c(5.1,4.1,4.1,5.1)) #Increase right margin
plot(plotting[,c(1,3)],xaxt="n", type="l", ylab="Avg RW (mm)", col="blue", ylim=c(0,4.5))
abline(a=2.0, b=0, col="blue", lty=2)
#This will tell R how to plot the polygon (sample depth):
#It need the x values (years) ascending and descending
#It also needs y values (AvgRW) for the above 0 values as well as the 0 values
xx <- c(unique(plotting$Year),rev(unique(plotting$Year)))
yy <- c(plotting$SampDepth,rep(0,length(unique(plotting$Year))))
title(main=i,line=2.5) #add title
axis(1,at=as.integer(plotting$Year),labels=plotting$Year) #bottom axis
par(new = TRUE) #overlay for secondary y
plot(plotting[,c(1,4)],xaxt="n",yaxt="n", ylab="",type="l", col=NA, ylim=c(0,35))
polygon(xx, yy, border="lightgray", col=rgb(190/255, 190/255, 190/255, 0.1))
abline(a=4, b=0, col="black", lty=4)
axis(4) #add secondary y axis
mtext("Sample Depth", side = 4, line=2) #add secondary y label
dev.off()
}
Я попытался регулировать свою метку оси, выбрав Years, которые были делится на 10, но эта корректировка приводит к «недвоичной аргументом» сообщение об ошибке:
> axis(1,at=as.integer(plotting$Year[ which(plotting$Year %% 10 = c(1:20))]), labels=plotting$Year) #bottom axis
Любые предложения были бы полезны!
Хотя ggplot делает много всего, что я ищу, есть несколько недостатков, поэтому я пока не использовал его. Мне действительно нужно иметь 2 оси y для моих сюжетов, которые ggplot на самом деле не поддерживает. Это решение отлично подходит для всего 1 оси y. – KKL234