所以,我有一个data.frame,这是6 * 4500,这是前三行和列的一个例子:
create table student_partition(
id bigint
,name string
,course array<string>)
PARTITIONED BY (address string)
ROW FORMAT DELIMiTED fields terminated by '\t'
collection items terminated by ','
stored as textfile;
当我使用时:
1912.5000 4246.6053 5543.7895
2080.6667 2484.7333 3317.6333
531.6667 4131.1000 5286.9000
我得到一个矩阵散点图。
示例适用于完整的数据帧,只有三个第一列。 忽略丢失的x和y,我将它们剪掉,它们存在......
我的问题是如何才能绘制第一列。意思是,X vs y和X vs z 理论上我可以用循环和子图来完成它。我更喜欢让它变得高效。
答案 0 :(得分:0)
考虑:
library(reshape2)
library(ggplot2)
df <- mtcars[,1:4]
head(df)
mpg cyl disp hp
Mazda RX4 21.0 6 160 110
Mazda RX4 Wag 21.0 6 160 110
Datsun 710 22.8 4 108 93
Hornet 4 Drive 21.4 6 258 110
Hornet Sportabout 18.7 8 360 175
Valiant 18.1 6 225 105
以下是您不想要的内容:
plot(df)
现在,为了轻松生成分组或分面图形,ggplot2
可能是您要使用的包。 ggplot2
要求您以长格式传递数据框,这是通过melt
数据框首先实现的,将x
变量保持为id
变量。这意味着你基本上是&#34;堆叠&#34;列彼此重叠,重复id变量并保持对它最初所属列的引用。在这里,我使用mtcars
数据集作为示例,其中x
是每小时英里数或mpg
。
df2 <- melt(df, id.vars = "mpg")
head(df2)
mpg variable value
1 21.0 cyl 6
2 21.0 cyl 6
3 22.8 cyl 4
4 21.4 cyl 6
5 18.7 cyl 8
6 18.1 cyl 6
tail(df2)
mpg variable value
91 26.0 hp 91
92 30.4 hp 113
93 15.8 hp 264
94 19.7 hp 175
95 15.0 hp 335
96 21.4 hp 109
拥有这种数据帧,您可以绘制使用例如。
ggplot(df2, aes(x=mpg, y=value)) + geom_point() + facet_wrap("variable", scales="free)
为每个组/初始列获取一个图表。