将R条形图转换为绘制2条线并添加数据点

将R条形图转换为绘制2条线并添加数据点,r,csv,plot,datapoint,R,Csv,Plot,Datapoint,我需要画一个2线的R程序图,数据点在一条线上,最小Y值设置为-6。以下数据是.csv输入文件: > cat verifyRecording.csv Time,MaxDBK,DBChange 07:30,20,2 07:35,21,1 07:40,22,0 07:45,23,-1 07:50,24,-2 07:55,32,-5 08:00,19,3 下面是一个R程序,它接受上面的.csv输入并输出一个带有2行的条形图。我只需要两条线,所以需要将条形图转换为两条线(绘图)图表。然后在DBCh

我需要画一个2线的R程序图,数据点在一条线上,最小Y值设置为-6。以下数据是.csv输入文件:

> cat verifyRecording.csv
Time,MaxDBK,DBChange
07:30,20,2
07:35,21,1
07:40,22,0
07:45,23,-1
07:50,24,-2
07:55,32,-5
08:00,19,3
下面是一个R程序,它接受上面的.csv输入并输出一个带有2行的条形图。我只需要两条线,所以需要将条形图转换为两条线(绘图)图表。然后在DBChange行上添加d1$DBChange数据点,并将最小Y值设置为-6

#!/usr/bin/Rscript
d1 <- read.csv(file="verifyRecording.csv",head=T,sep=",")

# Provide an image size which will ensure the x labels display
png(filename="verifyRecording.png", width=1024, bg="white")

# Replace the barplot function with a plot function.
# Fix the Y values be to actually show -6 as the minimum value.
mp <- barplot(d1$MaxDBK, ylim=c(-6,50), main="Sound Recording started: 05/21/2017 7:25 AM", xlab="Time in 24hr", ylab="Sound in Decibals", border='blue')
axis(1,at=mp,labels=d1$Time)

lines(mp,d1$DBChange,type="o",pch=19,lwd=2,col="red")
lines(mp,d1$MaxDBK,type="o",pch=19,lwd=2,col="blue")

#  Display the DBChange data values on the d1$DBChange line points.
#####  points(d1$Time, d1$DBChange, type="l", col="red")

legend("topright", c("Recommended_DB_Change","Max_DB_Volume"), lty=c(1,1), lwd=c(2.5,2.5), col=c("red","blue"))

dev.off() 
#/usr/bin/Rscript

d1如果从空绘图开始,而不是从条形图开始,则可以实现仅使用线条的绘图。这样,您只需在其中添加所需的元素

# Empty plot ("type = "n")
# xaxt = "n" in place to allow labelling with axis
# Set y axis limits
plot(1:nrow(d1), d1$MaxDBK, type = "n", ylim = c(-6, 50), xaxt = "n",
         main = "Sound Recording started: 05/21/2017 7:25 AM", 
         xlab = "Time in 24hr", 
         ylab = "Sound in Decibals")

# Lines added
    lines(d1$Time, d1$MaxDBK,type = "o",   pch = 19, lwd = 2, col = "blue")
    lines(d1$Time, d1$DBChange,type = "o", pch = 19, lwd = 2, col = "red")

# Label added in x axis. Changed at value to show properly    
    axis(side = 1, labels = d1$Time, at = d1$Time)

# Label each point with the values in d1$DBChange
    text(d1$Time, d1$DBChange, labels = d1$DBChange, pos = 3)

美好的是否可以在DBChange行上添加d1$DBChange数据点?“我的说明”中的My points()函数不起作用。可能在线条点上添加数据值不是R中的功能。通过添加数据值,您的意思是添加带有每个点的值的文本?还是其他?是-将d1$DBChange数据值添加到DBChange线上的关联点。这将有效地准确地传达DB需要更改的程度,而无需从Y轴线猜测。很好-正是它所需要的!非常感谢,这对我们的音响室真的很有帮助!