如何使用ggplot

时间:2016-09-29 15:08:04

标签: r ggplot2 polar-coordinates

示例数据:

mydata="theta,rho,value
0,0.8400000,0.0000000
40,0.8400000,0.4938922
80,0.8400000,0.7581434
120,0.8400000,0.6675656
160,0.8400000,0.2616592
200,0.8400000,-0.2616592
240,0.8400000,-0.6675656
280,0.8400000,-0.7581434
320,0.8400000,-0.4938922
360,0.8400000,0.0000000
0,0.8577778,0.0000000
40,0.8577778,0.5152213
80,0.8577778,0.7908852
120,0.8577778,0.6963957
160,0.8577778,0.2729566
200,0.8577778,-0.2729566
240,0.8577778,-0.6963957
280,0.8577778,-0.7908852
320,0.8577778,-0.5152213
360,0.8577778,0.0000000
0,0.8755556,0.0000000
40,0.8755556,0.5367990
80,0.8755556,0.8240077
120,0.8755556,0.7255612
160,0.8755556,0.2843886
200,0.8755556,-0.2843886
240,0.8755556,-0.7255612
280,0.8755556,-0.8240077
320,0.8755556,-0.5367990
360,0.8755556,0.0000000
0,0.8933333,0.0000000
40,0.8933333,0.5588192
80,0.8933333,0.8578097
120,0.8933333,0.7553246
160,0.8933333,0.2960542
200,0.8933333,-0.2960542
240,0.8933333,-0.7553246
280,0.8933333,-0.8578097
320,0.8933333,-0.5588192
360,0.8933333,0.0000000
0,0.9111111,0.0000000
40,0.9111111,0.5812822
80,0.9111111,0.8922910
120,0.9111111,0.7856862
160,0.9111111,0.3079544
200,0.9111111,-0.3079544
240,0.9111111,-0.7856862
280,0.9111111,-0.8922910
320,0.9111111,-0.5812822
360,0.9111111,0.0000000
0,0.9288889,0.0000000
40,0.9288889,0.6041876
80,0.9288889,0.9274519
120,0.9288889,0.8166465
160,0.9288889,0.3200901
200,0.9288889,-0.3200901
240,0.9288889,-0.8166465
280,0.9288889,-0.9274519
320,0.9288889,-0.6041876
360,0.9288889,0.0000000
0,0.9466667,0.0000000
40,0.9466667,0.6275358
80,0.9466667,0.9632921
120,0.9466667,0.8482046
160,0.9466667,0.3324593
200,0.9466667,-0.3324593
240,0.9466667,-0.8482046
280,0.9466667,-0.9632921
320,0.9466667,-0.6275358
360,0.9466667,0.0000000
0,0.9644444,0.0000000
40,0.9644444,0.6512897
80,0.9644444,0.9997554
120,0.9644444,0.8803115
160,0.9644444,0.3450427
200,0.9644444,-0.3450427
240,0.9644444,-0.8803115
280,0.9644444,-0.9997554
320,0.9644444,-0.6512897
360,0.9644444,0.0000000
0,0.9822222,0.0000000
40,0.9822222,0.6751215
80,0.9822222,1.0363380
120,0.9822222,0.9125230
160,0.9822222,0.3576658
200,0.9822222,-0.3576658
240,0.9822222,-0.9125230
280,0.9822222,-1.0363380
320,0.9822222,-0.6751215
360,0.9822222,0.0000000
0,1.0000000,0.0000000
40,1.0000000,0.6989533
80,1.0000000,1.0729200
120,1.0000000,0.9447346
160,1.0000000,0.3702890
200,1.0000000,-0.3702890
240,1.0000000,-0.9447346
280,1.0000000,-1.0729200
320,1.0000000,-0.6989533
360,1.0000000,0.0000000"

读入数据框:

foobar <- read.csv(text = mydata)

您可以检查(如果您确实想要!)数据在theta方向上是周期性的,即对于每个给定的rhotheta=0和{{ 1}}完全一样。我想绘制一个漂亮的极地曲面图,换句话说,根据theta=360着色的圆环。我尝试了以下方法:

value

我得到了:

enter image description here

呸!为什么在环空中有讨厌的洞?如果我生成包含更多行的library(viridis) # just because I very much like viridis: if you don't want to install it, just comment this line and uncomment the scale_fill_distiller line library(ggplot2) p <- ggplot(data = foobar, aes(x = theta, y = rho, fill = value)) + geom_tile() + coord_polar(theta = "x") + scale_x_continuous(breaks = seq(0, 360, by = 45), limits=c(0,360)) + scale_y_continuous(limits = c(0, 1)) + # scale_fill_distiller(palette = "Oranges") scale_fill_viridis(option = "plasma") 数据框(更多foobartheta值),则孔会变小。这不是一个可行的解决方案,因为更多rho / theta值的计算数据既昂贵又耗时,并且因为即使有100x100 = 10 ^ 4行,我仍然会遇到漏洞。此外,对于更大的数据框,rho需要永远呈现情节:ggplotgeom_tile的组合非常低效。难道没有办法在没有浪费内存的情况下获得漂亮的极地情节。 CPU时间?

1 个答案:

答案 0 :(得分:1)

编辑:删除了theta = 360的var renderHeader=" null"; if(sth){ renderHeader="sth is true"; } 的所有值(从theta = 0的值重复)

data

我刚刚从 ggplot(data = foobar, aes(x = theta, y = rho, fill = value)) + geom_tile() + coord_polar(theta = "x",start=-pi/9) + scale_y_continuous(limits = c(0, 1))+ scale_x_continuous(breaks = seq(0, 360, by = 45)) 移除limits 这给了我: enter image description here