[英]Convert an R barplot to plot 2 lines and add data points
I need to draw a 2 line R program plot with data points on one line and a minimum Y value set to -6. 我需要绘制一条2线R程序图,其中数据点在一条线上,并且最小Y值设置为-6。 The following data is the .csv input file:
以下数据是.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
Below is an R program that takes the above .csv input and outputs a bar chart with 2 lines. 下面是一个R程序,它采用上述.csv输入并输出带有2条线的条形图。 I only need the 2 lines so it needs the barplot converted to a 2 line (plot) chart.
我只需要2条线,因此它需要将条形图转换为2条线(图)图表。 Then add the d1$DBChange data points on the DBChange line and set the minimum Y value to -6.
然后在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()
You can achieve a plot with only the lines if you start with an empty plot, instead of a barplot. 如果从空图而不是条形图开始,则可以仅使用线条来实现图。 This way, you just add the elements you want in it.
这样,您只需在其中添加所需的元素。
# 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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.