[英]How to make geom_text() parallel to geom_segment() in a log-lin scale?
[英]How to plot in log-lin a time series in R?
這是基本代碼,對這個答案表示贊賞:
require(RCurl)
require(foreign)
x = getURL("https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_19-covid-Confirmed.csv")
corona = read.csv(text = x, sep =",",header = T)
Italy <- corona[corona$Country.Region=='Italy',][1,5:ncol(corona)]
library(xts)
plot(xts(unlist(Italy),
order.by = as.Date(sub("X", "", names(Italy)),"%m.%d.%y")),
ylim=c(0,20000), main="Number Cov-19 Italy")
當然,我想在y軸上的值是案件數量,在這里,而是我得到的實際日志基地2,如果我跑是這樣的:
LogItaly <- log2(Italy[,30:ncol(Italy)])
plot(xts(unlist(LogItaly),
order.by = as.Date(sub("X", "", names(LogItaly)),"%m.%d.%y")),
main=expression(paste(2^y, " - Doubling of no. cases Cov-19 ITL")),
ylim=c(0,16))
您可以使用 ggplot2 生成一個類似的圖形,其中 Y 軸按照您的預期進行了轉換。
require(ggplot2)
ts_data=xts(unlist(Italy),order.by = as.Date(sub("X", "", names(Italy)),"%m.%d.%y"))
base_breaks<-function(n=10){
function(x){
axisTicks(log10(range(x,na.rm=TRUE)),log=TRUE,n=n)
}
}
ts_dataframe=data.frame(time=index(ts_data),cases=coredata(ts_data))
p<-ggplot(data=ts_dataframe[30:dim(ts_dataframe)[1],],aes(time,cases))+
geom_line()+
scale_y_continuous(trans='log2',breaks=base_breaks())+
scale_x_date(date_breaks="3 days",date_minor_breaks="1 days")+
xlab("time")+
ylab("cases")+
labs(title="Number Cov-19 Italy")+
theme_bw()
有關將 xts 轉換為數據框的更多信息,您可以查看這里。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.