Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 轴不使用日期标签打印_R_Plot - Fatal编程技术网

R 轴不使用日期标签打印

R 轴不使用日期标签打印,r,plot,R,Plot,我有一个多元数据集,其典型数据如下: financials <- "A B C D E Dates 52730.1 104761.1 275296.1 569423.1 1136638.1 2013-12-2 77709 97940 275778 515095 1075166 2013-08-04 102734

我有一个多元数据集,其典型数据如下:

financials <- 
  "A           B         C          D            E         Dates
52730.1     104761.1    275296.1     569423.1  1136638.1    2013-12-2
77709       97940       275778      515095     1075166      2013-08-04
102734      71672       227017      482068     1011764      2013-03-17
96345       74035       240334      429026      998734      2012-10-28 
98651       62305       236694      436948      962913      2012-06-10 
78804       73568       242068      471640      945891      2012-01-22"
fData <- read.table(text = financials, header = TRUE)
然后我尝试了axis.Date函数,我得到一个错误,必须提供“origin”

axis.Date(side = 1, x = Labels, at = seq(1,12), format = "%m/%y", origin = "2011-07-03") 
我需要的是:(1)12个日期标签“标签”,x轴上有12个刻度线,倾斜45度;(2)格式化y轴,以10万美元的刻度显示财务数据;(3)请帮助我理解我的错误


非常感谢。

您可以尝试
ggplot
替代方案:

library(reshape2)
library(ggplot2)
library(scales)

df <- melt(fData)
df$Dates <- as.Date(df$Dates)

ggplot(data = df, aes(x = Dates, y = value, color = variable)) +
  geom_point() +
  geom_line() +
scale_x_date(breaks = date_breaks("2 month"),
             labels = date_format("%Y-%m")) +
  scale_y_continuous(labels = dollar,
                     breaks = seq(from = 100000, to = 1200000, by = 100000)) +
  theme_classic() + 
  theme(axis.text.x  = element_text(angle = 45, vjust = 1, hjust = 1))
library(重塑2)
图书馆(GG2)
图书馆(比例尺)

df您可以尝试
ggplot
替代方案:

library(reshape2)
library(ggplot2)
library(scales)

df <- melt(fData)
df$Dates <- as.Date(df$Dates)

ggplot(data = df, aes(x = Dates, y = value, color = variable)) +
  geom_point() +
  geom_line() +
scale_x_date(breaks = date_breaks("2 month"),
             labels = date_format("%Y-%m")) +
  scale_y_continuous(labels = dollar,
                     breaks = seq(from = 100000, to = 1200000, by = 100000)) +
  theme_classic() + 
  theme(axis.text.x  = element_text(angle = 45, vjust = 1, hjust = 1))
library(重塑2)
图书馆(GG2)
图书馆(比例尺)
df
at=seq(1,12)
不起作用,因为日期存储为数字,1到12与内部表示的日期不匹配。参见例如轴(侧=1,at=标签)
和帮助
?日期

日期表示为自1970-01-01以来的天数,带有 早期日期的负值

工作

但是,如果希望标签在基本图形中倾斜,我认为需要使用
text()
srt

text(Labels, par("usr")[3], srt = 45, adj = 1, labels = Labels, xpd = TRUE)
最后,使用
format()
big.mark=
格式化y标签:

axis(side = 2, at = pretty(as.matrix(fData[, -6])), labels = format(pretty(as.matrix(fData[, -6])), big.mark=","), las=1)
at=seq(1,12)
不起作用,因为日期存储为数字,并且1到12与内部表示的日期不匹配。参见例如轴(侧=1,at=标签)
和帮助
?日期

日期表示为自1970-01-01以来的天数,带有 早期日期的负值

工作

但是,如果希望标签在基本图形中倾斜,我认为需要使用
text()
srt

text(Labels, par("usr")[3], srt = 45, adj = 1, labels = Labels, xpd = TRUE)
最后,使用
format()
big.mark=
格式化y标签:

axis(side = 2, at = pretty(as.matrix(fData[, -6])), labels = format(pretty(as.matrix(fData[, -6])), big.mark=","), las=1)

首先,创建不带轴的绘图(
axes=FALSE
):

您不能对x轴使用
axis.Date
,因为您需要倾斜标签。您必须将标签的
(用于记号标记)和
文本
组合在一起:此处使用
格式
创建标签:

axis(side = 1, at = Labels, labels = FALSE) 
text(x = Labels, y = par("usr")[3] - 70000, labels = format(Labels, "%m/%y"), 
     srt = 45, pos = 1, xpd = TRUE)
现在,您必须创建y轴。首先,我们需要一个记号位置向量(
ticksY
)和一个标签向量(
LabelsY
)。这些值采用指定的格式:

ticksY <- seq(0, max(range), 100000)
LabelsY <- paste("$", format(ticksY, scientific = FALSE, big.mark = ","))
axis(side = 2, at = ticksY, labels = LabelsY)

ticksY首先,创建没有轴的绘图(
axes=FALSE
):

您不能对x轴使用
axis.Date
,因为您需要倾斜标签。您必须将标签的
(用于记号标记)和
文本
组合在一起:此处使用
格式
创建标签:

axis(side = 1, at = Labels, labels = FALSE) 
text(x = Labels, y = par("usr")[3] - 70000, labels = format(Labels, "%m/%y"), 
     srt = 45, pos = 1, xpd = TRUE)
现在,您必须创建y轴。首先,我们需要一个记号位置向量(
ticksY
)和一个标签向量(
LabelsY
)。这些值采用指定的格式:

ticksY <- seq(0, max(range), 100000)
LabelsY <- paste("$", format(ticksY, scientific = FALSE, big.mark = ","))
axis(side = 2, at = ticksY, labels = LabelsY)

ticksY我非常感谢lukeA、Sven Hohenstein和Henrik的技术知识和他们的时间。我非常感谢lukeA、Sven Hohenstein和Henrik的技术知识和他们的时间。Sven Hohenstein,代码运行良好,但我不明白我们如何使用y值设置x轴;票面价值(“usr”)[3]为y1。我也不明白你为什么在“y=par(“usr”)[3]-70000”中减去70000。谢谢again@RagyIsaac
par(“usr”)
返回打印区域的坐标。第三个值(
[3]
)是较低的y坐标。我减去
70000
个单位来向下移动标签(否则它们会与轴重叠)。我很抱歉,是的,您正在设置y轴,我得到了它的Ven Hohenstein,代码运行良好,但我不明白我们如何使用y值来设置x轴;票面价值(“usr”)[3]为y1。我也不明白你为什么在“y=par(“usr”)[3]-70000”中减去70000。谢谢again@RagyIsaac
par(“usr”)
返回打印区域的坐标。第三个值(
[3]
)是较低的y坐标。我减去
70000
个单位以向下移动标签(否则它们将与轴重叠)。我很抱歉,是的,您正在设置y轴,我知道了