简体   繁体   中英

R color scatter plot with more color gradiant

Hello I have Dataframe ploting scatter plot with color using other column values plot is looking fine but the colour values are start from 0-100 and most of the values are in between 50-100 so I wanted put more color to diffrentiat can any one suggest me how can I do with the R, I tried with viridis color it is also looking same 50-100 color is almost looking similar color

link for the data

https://drive.google.com/file/d/1EKhRwup3vUC3KVFOOh4XtKERIr8FQj3x/view?usp=sharing

code what I tried

df=read.table("test.txt",sep='\t', header=TRUE)
df = data.frame(df)

p=ggplot(df, aes(log(data1), log(data2)),cex=1.9)+
  geom_point(aes(color =data3)) +
  theme(legend.position = "top")+
  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
        panel.background = element_blank(), axis.line = element_line(colour = "black"))+
  theme(text = element_text(size = 20, face="bold"))

You can play with a customized color palette and scale_colour_gradientn like this:

library(RColorBrewer)
library(ggplot2)
#Data
df <- read.delim(file='test.txt',stringsAsFactors = F)
#Palette
myPalette <- colorRampPalette(rev(brewer.pal(11, "Spectral")))
sc <- scale_colour_gradientn(colours = myPalette(100))
#Plot
ggplot(df, aes(log(data1), log(data2)),cex=1.9)+
  geom_point(aes(color =data3)) + sc +
  theme(legend.position = "top")+
  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
        panel.background = element_blank(), axis.line = element_line(colour = "black"))+
  theme(text = element_text(size = 20, face="bold"))

Output:

在此处输入图片说明

If you want more color try this:

#Palette 2
sc2 <- scale_colour_gradientn(colours = rainbow(7))
#Plot
ggplot(df, aes(log(data1), log(data2)),cex=1.9)+
  geom_point(aes(color =data3)) + sc2 +
  theme(legend.position = "top")+
  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
        panel.background = element_blank(), axis.line = element_line(colour = "black"))+
  theme(text = element_text(size = 20, face="bold"))

Output:

在此处输入图片说明

Update2: With breaks you can define limits for the color scale:

#Plot 3
ggplot(df, aes(log(data1), log(data2),color=data3),cex=1.9)+
  geom_point() +
  scale_colour_gradientn(colours = rainbow(25),breaks = seq(0,100,by=5))+
  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
        panel.background = element_blank(), axis.line = element_line(colour = "black"))+
  theme(text = element_text(size = 12, face="bold"),
        legend.text = element_text(size = 7, face="bold"))

Output:

在此处输入图片说明

Update 3: If you want to have different colors you can mix different palettes like this:

#Plot
ggplot(df, aes(log(data1), log(data2),color=data3),cex=1.9)+
  geom_point() +
  scale_colour_gradientn(colours = c(viridis::inferno(5),
                                     viridis::plasma(5),
                                     viridis::magma(5),
                                     viridis::viridis(5),
                                     rainbow(5)),breaks = seq(0,100,by=5))+
  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
        panel.background = element_blank(), axis.line = element_line(colour = "black"))+
  theme(text = element_text(size = 12, face="bold"),
        legend.text = element_text(size = 7, face="bold"))

Output:

在此处输入图片说明

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM