在 R 中的绘图中添加将点连接到水平线的垂直线

问题描述

我正在 R 中绘制一些自相关值:

import pandas as pd
sheets_names = ['R9_14062021','R9_02122020','R9_14062021','R9_28052021','R9_17052021','R9_03052021','R9_14042021','R9_24032020','R9_19032020','R9 30112020','R9_17112020','R7_27012021','LOGS R9 01032021','LOGS R7 SAT01032021','R7_30032020','G9_06032020','G5T_20012021','TNT_08122020','R7_SAT_24112020','G6T_12112020','R9 12102020']

logs = [' Msd','Provider Id','Terminal Type','chgtCh','accessRecordModule','playerPlay startOver','playerPlay PdL','playerPlay PVR','contentHasAds','pdlComplete','lirePdl','lireVod']

dfs_list = pd.read_excel('COMPIL LOGS INDICATEURS V14062021.xlsx',sheet_name = sheets_names )
writer = pd.ExcelWriter('pandas_multiple.xlsx',engine='xlsxwriter')
    for sheet in dfs_list:
        df = dfs_list[sheet]
        df['Dt'] = pd.to_datetime(df['Dt']).dt.date
        df1 = df.groupby(['Dt','webApp','mw'])[' Msd'].count()
        for log in logs:
            if log in df:
                df1 = df.groupby(['Dt','mw'])[log].sum()
                df1.to_update.get(sheet)
    #df1.reset_index(inplace=True)
    df1.to_excel(writer,sheet_name=sheet)

writer.save()

这是我的代码,这是我在 R 中得到的

enter image description here

但是,我想要像下图那样的东西,在那里我用红线将点连接到 0 处的水平线。

enter image description here

知道怎么做吗?

解决方法

可以用type = "h"添加垂直线,然后单独添加点

plot(y=lag[2:N],x=1:(N-1),xlab="lag",ylab="Autocorrelation",ylim=c(-1,1),col="black",type = "h") 
points(y=lag[2:N],pch=16,col="red",type = "p")
,

如果使用 ggplot 应该这样做:

plot_df = data.frame(x = 1:20,y = rnorm(20))

ggplot(plot_df,aes(x,y,ymax = y,ymin = 0)) +
    geom_pointrange(color = "red") +
    geom_hline(yintercept = min(plot_df$y),color = "blue") +
    geom_hline(yintercept = max(plot_df$y),color = "blue")