Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何使用两个y轴和一个x轴在布局中绘制多个图形_R_Ggplot2 - Fatal编程技术网

R 如何使用两个y轴和一个x轴在布局中绘制多个图形

R 如何使用两个y轴和一个x轴在布局中绘制多个图形,r,ggplot2,R,Ggplot2,我想用一个布局显示时间、y_min、y_max的图形结果,按时间(X轴)在y轴上画两条线(min_值和max值),并在y轴上画min_值和max_值的分离图形 ##数据集(test.csv) X轴是时间 Y轴是Y_最小值,Y_最大值 时间 最小值 最大值 945 0.892021996 0.964050503 955 0.769454489 0.884603426 965 0.774495876 0.884901433 975 0.745542623 0.897309432 985 0.7535

我想用一个布局显示时间、y_min、y_max的图形结果,按时间(X轴)在y轴上画两条线(min_值和max值),并在y轴上画min_值和max_值的分离图形

##数据集(test.csv) X轴是时间 Y轴是Y_最小值,Y_最大值

时间 最小值 最大值 945 0.892021996 0.964050503 955 0.769454489 0.884603426 965 0.774495876 0.884901433 975 0.745542623 0.897309432 985 0.753567721 0.912993446
基本解决方案的一种可能性是,首先画一条线,比如说
min\u值
,然后使用
line()
添加第二条
max\u值

所以这看起来像:

plot(test.csv$time, test.csv$min_value, type = "l") 
lines(test.csv$time, test.csv$max_value)
对于
ggplot
版本,您需要将数据帧转换为长格式:

test.csv <- melt(test.csv, id.vars = "time")
ggplot(test.csv, mapping = aes(x = variable, y = value, col = time)) +
geom_line()

test.csv您有两种方法可以做到这一点-一种是简单的,另一种是整洁的

简单的方法是有两个
geom_line
调用,并为每个调用更改
aes(y=)
(手动设置颜色):

库(ggplot2)
图书馆(tidyr)
df%pivot\u更长(-time)%%>%
ggplot(aes(时间、值、颜色=名称))+
geom_线()+
刻度颜色手册(数值=c(“红色”、“蓝色”))


由(v1.0.0)于2021-03-24创建的

您是否需要辅助y轴,或者您只是想从该数据中绘制两条线,其中一条线的y值与“最小值”关联,另一条线的y值与“最大值”关联?看起来两者的比例相同,对吗?@chemdork123-我想在y轴上画两条线(最小值和最大值)。谢谢。但是你制作的图形不能分配最小值和最大值。我想在y轴上绘制最小值和最大值的分离图。要区分这两条线,可以给它们不同的颜色(参见我的ggplot示例),在基本版本中只需添加col=“red”你想画两张图,把最小值和最大值分别放在不同的图上吗?我已经根据你们的代码画好了y轴上的两条线。现在,我没有问题了。