具有固定起点和终点的动态x轴

时间:2017-11-29 14:27:46

标签: r plot

我正在尝试编写一行代码,在给定函数的第一个点(年)标记我的动态x轴,在函数的最后一个点(年),以合理的滴答(取决于介于两者之间。到目前为止,我已经想出了这个:

start <- 1851
end <- 2016

plot(c(start, end), c(0, 1), type = "n", xaxt = "n", yaxt = "n", bty = "n", xlab = "Year", ylab = "")

axis(1, at=c(round(seq(start, end, ((end - start) / (start / (end - start)) * 1.5)), 0), end), label = c(round(seq(start, end, ((end - start) / (start / (end - start)) * 1.5)), 0), end))

麻烦就是这个问题:

c(round(seq(start, end, ((end - start) / (start / (end - start)) * 1.5)), 0), end)

#  [1] 1851 1851 1873 1895 1917 1939 1961 1983 2005 2016

问题是当第二个最后一个刻度和最后一个刻度(固定)非常靠近时,轴看起来不太好,只有第二个刻度标记,所以我尝试了:

c(start, round(seq((start + ((end - start) / (start / (end - start)) * 1.5)), (end - ((end - start) / (start / (end - start)) * 1.5)), ((end - start) / (start / (end - start)) * 1.5)), 0), end)

# [1] 1851 1873 1895 1917 1939 1961 1983 2016

除了第一个和最后一个刻度之外,这应该是固定第二个刻度线并且第二个刻度线是一个刻度尺。它适用于例如。

start <- 1860
end <- 2010

c(start, round(seq((start + ((end - start) / (start / (end - start)) * 1.5)), (end - ((end - start) / (start / (end - start)) * 1.5)), ((end - start) / (start / (end - start)) * 1.5)), 0), end)

# [1] 1860 1878 1896 1914 1933 1951 1969 1987 2010

但短期分手

start <- 1944
end <- 1966

c(start, round(seq((start + ((end - start) / (start / (end - start)) * 1.5)), (end - ((end - start) / (start / (end - start)) * 1.5)), ((end - start) / (start / (end - start)) * 1.5)), 0), end)

    #  [1] 1944 1944 1945 1945 1945 1946 1946 1947 1947 1947 1948 1948 1948 1949 1949 1950 1950
# [18] 1950 1951 1951 1951 1952 1952 1953 1953 1953 1954 1954 1954 1955 1955 1956 1956 1956

#[35] 1957 1957 1957 1958 1958 1959 1959 1959 1960 1960 1960 1961 1961 1962 1962 1962 1963    #[52] 1963 1963 1964 1964 1965 1965 1965 1966

对于一堆代码来说,无论周期如何都可以很好地缩放轴?

0 个答案:

没有答案