传说没有显示,网格不会变得更精细

时间:2016-09-07 21:36:23

标签: r ggplot2 datagrid legend

我有以下代码。如何使网格更精细?还不确定为什么传说没有显示?就像我想要在75到100之间有4个8个方格。

#Select the colors from http://colorbrewer2.org/#type=sequential&scheme=RdPu&n=9

if( !is.element("ggplot2", installed.packages()[,1]) )
  install.packages("ggplot2")

if( !is.element("grid", installed.packages()[,1]) )
  install.packages("grid")

if( !is.element("plyr", installed.packages()[,1]) )
  install.packages("plyr")

if( !is.element("data.table", installed.packages()[,1]) )
  install.packages("data.table")

if( !is.element("igraph", installed.packages()[,1]) )
  install.packages("igraph")

if( !is.element("ggthemes", installed.packages()[,1]) )
  install.packages("ggthemes")


library(ggplot2)
library(grid)
library(plyr)
library(data.table)
library(igraph)
library(ggthemes)

#setwd(dir = "/home/sathya/Documents/coreset/rplots/fig/svm")
svmdata <- fread("ionosphere-smooth-ls-optim.dat")
#svmdata <- read.table("ionosphere-smooth-ls-optim.dat", header=TRUE)
svmdata <- rename(svmdata, c("# k"="k"))
svmdata <- head(svmdata, 100)

svmdata_ls <- fread("ionosphere-ls-optim.dat")
svmdata_ls <- head(svmdata_ls,100)
svmdata_ls <- rename(svmdata_ls, c("# k"="k"))

y_max <- max(max(svmdata$gap), max(svmdata_ls$gap))
base <- ggplot(data=svmdata_ls,aes(x=k, y=gap, group=2)) + 
       geom_line(colour="#dd3497", size=1.5) + #geom_point(size=4, shape=21) +
       geom_line(data=svmdata,aes(x=k, y=gap, group=1 ), colour="#54278f", size=1.5) +
       #ggtitle("svmdata_ls gap and svmdata gap vs k") +
       geom_smooth(alpha=.2, size=1) +
       geom_abline(colour = "grey50", size = 2) +
       xlim(0, max(svmdata$k)) +
       ylim(0, y_max) +
       scale_colour_manual("", 
                      breaks = c("svmdata_ls", "svmdata"),
                      values = c("#dd3497", "#54278f")) 


labelled <- base +
  labs(
    x = "K",
    y = "Gap",
    colour = "Cylinders",
    title = "svmdata_ls gap and svmdata gap vs k"
  ) 
labelled


styled <- labelled +
  theme_bw() + 
  theme(
    plot.title = element_text(face = "bold", size = 25, colour = "purple"),
    axis.title=element_text(size= 20, face= "bold", colour="blue"),
    legend.background = element_rect(fill = "white", size = 4, colour = "white"),
    legend.justification = c(0, 1),
    legend.key = element_rect(fill = "yellow"),
    #legend.position = "bottom",
    legend.position = c(0, 1),
    axis.ticks = element_line(colour = "grey70", size = 0.25),
    panel.grid.major = element_line(colour = "grey70", size = 0.5),
    panel.grid.minor = element_line(colour= "grey70", size=0.5)
  )
styled

enter image description here

数据:http://pastebin.com/0wb6S4m8http://pastebin.com/L4sdEyYZ

2 个答案:

答案 0 :(得分:2)

这些只是基础知识;我没有打扰所有的特殊颜色等。

  • 获取图例,将您的数据合并到一个长数据框中并使用Unknown provider: authProvider <- auth,其中aes(colour=grp)是标识该组的变量。
  • 要获得更精细间距的刻度线,请在grpscale_x_continuous()设置时使用breaks

获取数据:

minor_breaks

将数据合并到单个标记数据框中:

rr <- function(x) plyr::rename(as.data.frame(data.table::fread(x)),
                               c("# k"="k"))
svmdata <- rr("ionosphere-smooth-ls-optim.dat")
svmdata_ls <- rr("ionosphere-ls-optim.dat")

简介:

get_vars <- function(d) d[c("k","gap")]
svmcomb <- plyr::ldply(list(svmdata=svmdata,svmdata_ls=svmdata_ls),
        get_vars)

enter image description here

答案 1 :(得分:1)

通常使用ggplot,你会更接近这种类型的东西:

svmdata$grp <- "svmdata"
svmdata_ls$grp <- "svmdata_ls"
dat <- rbind(svmdata,svmdata_ls)
base <- ggplot(data=dat,aes(x=k, y=gap, colour = grp,group=grp)) + 
    geom_line(size=1.5) + #geom_point(size=4, shape=21) +
    geom_line(size=1.5) +
    #ggtitle("svmdata_ls gap and svmdata gap vs k") +
    geom_smooth(alpha=.2, size=1) +
    geom_abline(colour = "grey50", size = 2) +
    xlim(0, max(svmdata$k)) +
    ylim(0, y_max) +
    scale_colour_manual("", 
                        breaks = c("svmdata_ls", "svmdata"),
                        values = c("#dd3497", "#54278f"))