簡體   English   中英

如何在不影響plot的點數的情況下修改x軸水平?

[英]How to modify the x axis levels without affecting the number of points of the plot?

需要在不影響最終 output 中實際點數的情況下整齊地顯示 x 軸水平。 目前,我的 x 軸間距很近,當我在 powerpoint 中顯示時,這看起來不太好

library("readxl")
my_data <-read_excel("central_high.xlsx")  # Input file 
str(my_data)
my_data = as.data.frame(my_data)
str(my_data)
my_data$var1 = NULL
f20 = as.data.frame(table(my_data$Year20))
f20$Var1 = as.Date(f20$Var1, "%Y-%m-%d")
f20$Var1 = format(f20$Var1, format="%m-%d")
f20$Cumulative_F20 = cumsum(f20$Freq) # cumulative calculation
f20
newcol_20 = c( my_data$Year19,
           my_data$Year18, my_data$Year17,
           my_data$Year16, my_data$Year15,
           my_data$Year14, my_data$Year13,
           my_data$Year12, my_data$Year11,
           my_data$Year10, my_data$Year9,
           my_data$Year8, my_data$Year7,
           my_data$Year6, my_data$Year5,
           my_data$Year4, my_data$Year3,
           my_data$Year2, my_data$Year1)
 str(newcol_20)
 newdata_20 = data.frame(newcol_20)
 str(newdata_20)
 newdata_20$newcol_20 = as.Date(as.character(newdata_20$newcol_20), "%Y-%m-%d")
 newdata_20$newcol_20 = format(newdata_20$newcol_20, format="%m-%d")
 str(newdata_20)
 newtable_20 = table(newdata_20$newcol_20)
 newtable_20
 newdf_20 = as.data.frame(newtable_20)
 #newdf_20$Cumulative_20 = cumsum(newdf_20$Freq)/19 # cumulative calculation
 newdf_20$Freq = newdf_20$Freq/19
 newdf_20
 newcol_05 = c( my_data$Year19,
           my_data$Year18, my_data$Year17,
           my_data$Year16)
 str(newcol_05)
 newdata_05 = data.frame(newcol_05)
 str(newdata_05)
 newdata_05$newcol_05 = as.Date(as.character(newdata_05$newcol_05), "%Y-%m-%d")
 newdata_05$newcol_05 = format(newdata_05$newcol_05, format="%m-%d")
 str(newdata_05)
 newtable_05 = table(newdata_05$newcol_05)                                                  
 newtable_05

 newdf_05 = as.data.frame(newtable_05)
 newdf_05$Cumulative_05 = cumsum(newdf_05$Freq)/4 # cumulative calculation
 newdf_05$Freq = newdf_05$Freq/4
 newdf_05
 library(ggplot2)
 library(ggpubr)
 ggplot() +
  geom_line(data = newdf_20, aes(x=Var1, y=cumsum(Freq), group = 1, color = "#111111"), size = 1.6) +
  geom_line(data = newdf_05, aes(x=Var1, y=cumsum(Freq), group = 1, color = "#999999"), size = 1.6) +
  geom_line(data = f20, aes(x=Var1, y=cumsum(Freq), group = 1, color = "#CC79A7"), size = 1.6) +
  geom_vline(xintercept = "03-25", color="gray", size=1)+
  geom_vline(xintercept = "04-21", color="gray", size=1)+
  labs(y = "Cumulative_Frequency", colour= "#000000", size = 16 )+
  font("ylab", size = 15, color = "black", face = "bold.italic")+
 font("legend.text",size = 10, face = "bold")+
 font("legend.title",size = 15, face = "bold")+
 theme(axis.line.x = element_line(size = 0.5, colour = "black"), # theme modification
    axis.line.y = element_line(size = 0.5, colour = "black"),
    #axis.text.x=element_blank(),axis.ticks.x=element_blank(),
    panel.background = element_blank(),
    legend.position = 'none',
    axis.text.x = element_text(colour = "#000000", size = 7,
                               angle = 90, face ="bold" ),
    axis.text.y = element_text(colour = "#000000", size = 12,
                               angle = 90, face ="bold" ))

請修改代碼,我還添加了最終的 output 我得到的需要在代碼中進行一些修改以整齊地獲得 x 軸

一種選擇是避開 x 軸上的標簽:

library(ggplot2)
library(ggpubr)
ggplot() +
  geom_line(data = newdf_20, aes(x=Var1, y=cumsum(Freq), group = 1, color = "#111111"), size = 1.6) +
  geom_line(data = newdf_05, aes(x=Var1, y=cumsum(Freq), group = 1, color = "#999999"), size = 1.6) +
  geom_line(data = f20, aes(x=Var1, y=cumsum(Freq), group = 1, color = "#CC79A7"), size = 1.6) +
  geom_vline(xintercept = "03-25", color="gray", size=1)+
  geom_vline(xintercept = "04-21", color="gray", size=1)+
  scale_x_discrete(guide = guide_axis(n.dodge=2))+
  labs(y = "Cumulative_Frequency", colour= "#000000", size = 16 )+
  font("ylab", size = 15, color = "black", face = "bold.italic")+
  font("legend.text",size = 10, face = "bold")+
  font("legend.title",size = 15, face = "bold")+
  theme(axis.line.x = element_line(size = 0.5, colour = "black"), # theme modification
        axis.line.y = element_line(size = 0.5, colour = "black"),
        #axis.text.x=element_blank(),axis.ticks.x=element_blank(),
        panel.background = element_blank(),
        legend.position = 'none',
        axis.text.x = element_text(colour = "#000000", size = 7,
                                   angle = 90, face ="bold" ),
        axis.text.y = element_text(colour = "#000000", size = 12,
                                   angle = 90, face ="bold" ))

Output:

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM