RjpWiki アーカイブス【R における色の名前1 (06.06.22) 】
color.chart(5,5)
等とすることにより，以下のようなカラーチャートを作成する関数です第一引数は列数，第二引数は行数。デフォールトはそれぞれ８と１０。半分決めうちしてますので，プロットウインドウの大きさも一緒に調整してください。一度全部描画して，スクリーンショットを取っておくといいかもしれません。

whitesmoke
whitesmoke
651

yellowyellow
652

yellow4
yellow4656

yellow1
yellow1653

yellow2
yellow2654

yellow3
yellow3655

yellowgreen
yellowgreen
657
658

659

660

661

662

663

664

665

666

667

668

669

670

671

672

673

674675

図 1: R における色の名前 (1)polygon.plot <- function(row, col, name, name.of.color, height,cell.width, cell.height){row <- row*cell.width
col <- col*cell.heightordinate.x <- c(row, row, row+cell.width, row+cell.width, row)
ordinate.y <- height-c(col, col+cell.height, col+cell.height, col, col)polygon(ordinate.x, ordinate.y, col=name.of.color)text(row+cell.width*0.1, height-(col+cell.height*0.6), name, pos=4)
text(row+cell.width*0.1, height-(col+cell.height*0.4), name.of.color, pos=4)
text(row+cell.width*0.1, height-(col+cell.height*0.2),
name.of.color,pos=4,col="white")}1

written by S. AOKI, Jul 04, 2003

2/4 頁color.chart <- function(n.width=8, n.height=10){
width <- 640
height <- 480
name.of.color <- colors()n <- length(name.of.color)max <- floor(n/(n.width*n.height))
old <- par(ask=TRUE)
for (i in 0:max) {plot(c(0, width, width, 0, 0), c(0, 0, height, height, 0),type="n",xaxt="n", yaxt="n", xlab="",ylab="")for (col in 0:(n.height-1)) {for (row in 0:(n.width-1)) {name <- (n.width*n.height)*i+col*n.width+row+1cat(name, ", ", name.of.color[name], "&#165;n")polygon.plot(row, col, name, name.of.color[name], height,width/n.width, height/n.height)}}}par(old)}
R-help(29 Jun 2003) に hex と色の名前を変換する自作関数が紹介されていました。
colors.hex <- function( x=colors() ) {color.hex <- function(x) do.call( "rgb", as.list(col2rgb(x)/255) )sapply( x, color.hex )}colors.name <- function( x ) {color.name <- function( x ) colors()[ colors.hex() == x ]lapply( x, color.name )}colors.hex( "red" )colors.hex( colors()[1:5] )colors.name( "#FF0000" )colors.name( rainbow(3) )3/4 頁

Demo(graphic) の pie チャートに label をつけました。
colors.name <- function( x ) {color.name <- function( x ) colors()[ colors.hex() == x ]lapply( x, color.name )}以下の命令を入力すると、以下の hex 表示が一部色名に変わります。

pie(rep(1, 6), col = rainbow(6),labels=colors.name(rainbow(6)))

c("yellow", "yellow1")c("green", "green1")c("red", "red1")c("cyan", "cyan1")c("magenta", "magenta1")c("blue", "blue1")

図 2: R における色の名前 (2)4/4 頁

最近のソース．

polygon.plot <- function(row, col, name, name.of.color, height,cell.width, cell.height){row <- row*cell.width
col <- col*cell.heightordinate.x <- c(row, row, row+cell.width, row+cell.width, row)
ordinate.y <- height-c(col, col+cell.height, col+cell.height, col, col)polygon(ordinate.x, ordinate.y, col=name.of.color)text(row+cell.width*0.1, height-(col+cell.height*0.6), name, pos=4)
text(row+cell.width*0.1, height-(col+cell.height*0.4), name.of.color, pos=4)
text(row+cell.width*0.1, height-(col+cell.height*0.2),
name.of.color,pos=4,col="white")}color.chart <- function(n.width=8, n.height=10){
width <- 1200
height <- 900
name.of.color <- colors()n <- length(name.of.color)max <- floor(n/(n.width*n.height))
pdf("colorchart%02i.pdf", onefile=FALSE, width=width/72, height=height/72)
for (i in 0:max) {plot(c(0, width, width, 0, 0), c(0, 0, height, height, 0),type="n",xaxt="n", yaxt="n", xlab="",ylab="")for (col in 0:(n.height-1)) {for (row in 0:(n.width-1)) {name <- (n.width*n.height)*i+col*n.width+row+1
cat(name, ", ", name.of.color[name], "&#165;n")polygon.plot(row, col, name, name.of.color[name], height,
width/n.width, height/n.height)}}}
dev.off()}