R “创建二维/三维矩阵”;“对象”;从数据列中选择,并将其进一步绘制为等高线图
事实上,我已经在创建矩阵的过程中陷入了困境。让我们先从数据开始:R “创建二维/三维矩阵”;“对象”;从数据列中选择,并将其进一步绘制为等高线图,r,matrix,ggplot2,R,Matrix,Ggplot2,事实上,我已经在创建矩阵的过程中陷入了困境。让我们先从数据开始: Length Diameter Defect Start Defect End Defect Location Defect Angle 1 9850 100 975 987 986 0 2 9850 100 1937 1949 709 0 3
Length Diameter Defect Start Defect End Defect Location Defect Angle
1 9850 100 975 987 986 0
2 9850 100 1937 1949 709 0
3 9850 100 4775 4787 604 0
4 9850 100 5775 5787 15 0
5 9850 100 6062 6087 44 -3
6 9850 100 6325 6337 385 0
7 9850 100 6650 6675 588 0
以下是输入:
structure(list(Length = c(9850, 9850, 9850, 9850, 9850, 9850,
9850), Diameter = c(100, 100, 100, 100, 100, 100, 100), `Defect Start` = c(975,
1937, 4775, 5775, 6062, 6325, 6650), `Defect End` = c(987, 1949,
4787, 5787, 6087, 6337, 6675), `Defect Location` = c(986, 709,
604, 15, 44, 385, 588), `Defect Angle` = c(0, 0, 0, 0, -3, 0,
0)), class = "data.frame", row.names = c(NA, -7L))
数据的图形说明如下(快速喷漆解决方案)
目标
目标是使用例如等高线图(x轴长度、y轴直径等)创建2d或3d图,以显示缺陷的位置(缺陷通常是一卷中的简单线条,其长度和宽度分别为开始和结束和结束
我一直在准备矩阵,实际上我不知道是否有可能在R中完成,但我想这将是一个伟大而有趣的方法来检查
如果您有任何建议,我将不胜感激!这里有一个想法
将每个管道绘制为二维矩形,在其上显示缺陷
待完成:-找出
缺陷位置
的含义-需要角度吗
library(tidyverse)
df <- mydata %>%
#give the pipe an id
mutate( id = 1 ) %>%
group_by( id ) %>%
#give each defect (by pipe) an id
mutate( defect_id = row_number() ) %>%
#not sure what to do woith defect location....
#to get it inside the pipe, i divide by 10... needs looking into!!
mutate( `Defect Location` = `Defect Location` / 10 ) %>%
gather("defect", "x", -Length, -Diameter, -`Defect Angle`, -id, -defect_id, -`Defect Location`)
ggplot( data = df ) +
#draw pipe as a 2D rectangle, height = pi * Diameter
geom_rect( aes( xmin = 0, xmax = Length, ymin = 0, ymax = pi * Diameter ), alpha = 0.1 ) +
#draw start-endpoint and lines with defects
geom_point( aes( x = x, y = `Defect Location`, group = as.character(defect_id) ), color = "red", size = 2 ) +
geom_line( aes( x = x, y = `Defect Location`, group = as.character(defect_id), colour = as.character(defect_id) ), color = "red", size = 2 ) +
#draw each pipe
facet_wrap( ~id, ncol = 1 )
库(tidyverse)
df%
#给管道一个id
突变(id=1)%>%
分组依据(id)%>%
#给每个缺陷(通过管道)一个id
突变(缺陷id=行号())%>%
#不确定如何处理缺陷位置。。。。
#为了让它进入管道,我除以10…需要考虑!!
突变(`Defect Location`=`Defect Location`/10)%>%
聚集(“缺陷”、“x”、-长度、-直径、`defect Angle`、-id、-defect\U id、`defect Location`)
ggplot(数据=df)+
#将管道绘制为二维矩形,高度=π*直径
几何误差(aes(xmin=0,xmax=长度,ymin=0,ymax=pi*直径),alpha=0.1)+
#绘制有缺陷的起点和终点线
几何点(aes(x=x,y=`缺陷位置',组=as.character(缺陷id)),color=“red”,size=2)+
几何图形线(aes(x=x,y=`缺陷位置',组=as.character(缺陷id),颜色=as.character(缺陷id)),颜色=red,大小=2)+
#画每根管子
面_包裹(~id,ncol=1)
如果直径=100,缺陷位置怎么可能>100*pi?您的大棚中的1240是从哪里来的?这正是我一直在问自己的问题!这是来自测量缺陷的机器的数据,由工人设置成这样,甚至没有任何意义…这看起来已经很好了!而不是Points行会更好(显示缺陷的长度)缺陷相对于总x非常短…因此输出中的行不会有太大变化(在本例中)@malu_a行添加到更新的答案中…图像不会改变,但尝试使用不同的样本数据并观察行的出现:)非常感谢您的帮助!