我有两个数据列表。
a = c(0, 14400, 15000, 1600)
b = c(0, 1.1, 2.3, 4.5)我想用径向图绘制一个使用极(径)坐标的图。我想要r=theta,所以r和theta的坐标值在列表"a“中。
对于点的颜色,我想使用列表"b“来指定使用条件的每个点的颜色。例如:如果b中的elemnt的值小于1,则该元素的颜色为黑色。如果b中元素的值在1和2之间,则颜色为绿色。如果b中元素的值大于3,则颜色为红色。
因此,结果列表将是:
c = c("black", "green", "red", "red")最后一步是使用列表"c“对元素进行着色。总而言之,我的问题的答案需要两个步骤: 1)创建一个新的列表"c“,其中包含基于b值的颜色名称列表。2)使用径向图中的列表c对图中的每个符号进行着色(我不知道这是否可能)。
这是我到目前为止所拥有的。
pp <- radial.plot(a, a, start = -pi/3, rp.type = "s", clockwise = TRUE, point.symbols=19)
pp实际的数据要大得多,但我只提供了一个小的示例代码来专注于我需要解决的两个问题。我能够使用ggplot2生成这个图。但是,我更喜欢使用plotrix包中的radial.plot函数,因为还有其他原因(极坐标/径向坐标的代码似乎更简单、更容易使用)。
请帮帮忙,我是新手。谢谢。
发布于 2017-08-23 23:13:03
这段代码应该足够灵活,可以生成您想要的绘图类型。它生成如下所示的图。对于角度,我对它们进行了缩放,以便a的最大值将映射到2*pi。这将使绘图呈现螺旋状外观。不这样做意味着角度将是模2*pi的a中的值,并且对于大的数字,这看起来是随机的。
第二部分关于颜色的分配可以通过基于逻辑索引的颜色分配来完成。可以根据需要添加更多条件。如果没有特定的模式,给出一个更通用的着色结果并不简单。

library(plotrix)
# given example data
a = c(0, 14400, 15000, 1600)
b = c(0, 1.1, 2.3, 4.5)
# initializing vector of colors as NA
colors_plot <- rep(NA,length(b))
# set of conditions listed in the plot
colors_plot[b < 1] <- "black"
colors_plot[intersect(1 < b,b < 2)] <- "green" # need intersect because of double condition
colors_plot[b > 2] <- "red"
# add more conditions as needed
pp <- radial.plot(a, # radial distance
a*2*pi/max(a), # scaling so max(a) maps to 2*pi, this avoids the cooridnates wrapping
start = -pi/3, # same as code
rp.type = "s",
clockwise = TRUE,
point.symbols=19,
point.col=colors_plot, # colors calcualted above
radial.labels=NA # not plotting radial axis labels
)https://stackoverflow.com/questions/39663548
复制相似问题