我在使用R中的Google图表API来正确绘制散点图中的颜色时遇到问题。
library("googleVis")
df=data.frame(x1=c(1,2,3), x2=c(2,3,4))
opts = list(pointSize = 1, colors="['red', 'black', 'blue']")
Sc <- gvisScatterChart(df, options=opts)
plot(Sc)
所有的点都是红色的。
非常感谢帮助。
答案 0 :(得分:0)
我自己有同样的问题&amp;想出了如何修复它 - 因为关于这个主题的文档/讨论很少,在这里张贴后代。
在这个例子中,看起来你有三个点,并希望每个点都是不同的颜色(分别是红色,黑色,蓝色),你的数据帧采用X,Y散点图(2列)的形式。 如果要对散点图分组,则每个组都需要自己的Y列。
您的数据框需要如下所示,其中第一列被理解为X,其他列被理解为Y值,每个列都代表自己的颜色:
df=data.frame(x1=c(1,2,3), x2=c(2,NA,NA), x3=c(NA,3,NA), x4=c(NA,NA,4));
完整代码现在显示三个不同颜色的点(下方)。注意: colors 选项是组的颜色,而不是单个点。你有三个点和三个组,所以这个例子没有清楚地显示出来。
df=data.frame(x1=c(1,2,3), x2=c(2,NA,NA), x3=c(NA,3,NA), x4=c(NA,NA,4));
opts = list(pointSize = 15, legend='none', colors="['red', 'black', 'blue']");
Sc <- gvisScatterChart(df, options=opts);
plot(Sc);
您基本上会根据某些分组将Y值分成不同的列。这个警告并不完全是直截了当的,但这里是我如何将X,Y散点图数据框分成多个组列,给定第三列“GROUP”,它编码每行的数字成员ID(例如1 - 10): / p>
# Original X,Y dataframe
colnames(df) <- c("X","Y","GROUP");
# Create an n-column dataframe based on number of groups
Y_cols <- t(data.frame(x=rep(x=NA, times=length(unique(df$GROUP)))));
# Bind n-groups new columns to original dataframe
df_viz <- suppressWarnings(cbind(df, Y_cols));
# Copy the Y value to the appropriate column based on group ID
for(r in 1:nrow(df_viz)) df_viz[r,as.character(df_viz[r,"GROUP"])] <- df_viz[r,"Y"];
# Drop original Y and GROUP columns
df_viz <- df_viz[,-(2:3)];
然后 gvisScatterChart 中的 colors 选项看起来像是,它使用RColorBrewer根据不同组的数量生成动态调色板:
colors=paste("['",paste(brewer.pal(max(df$GROUPS),"Paired"), collapse = "\',\'"),"']", sep="")
实现这一点可能有更简洁的方法,但这基本上就是它的主旨。
希望这有帮助!