7

ggplot で使用されるさまざまな色をプロットするために、次の関数を実装しました。これらの関数は、凡例に 16 進数の色の値もプロットします。しかし、どういうわけか、色と 16 進値の割り当てが間違っていて、その理由がわかりません。dataggplot2 関数で使用されるデータ フレームに追加する前に、16 進数の色を並べ替えました。これで問題は解決すると思いましたが、解決しませんでした。colまた、実際に凡例として使用したい16進数とRGBカラー値を含むベクトルを作成しましたが、これを機能させるのにも苦労しています

ggplot_colors <- function(n, size=8, alpha=1) {
    library(grDevices)
    hues = seq(15, 375, length=n+1)
    cols_hex <- sort(hcl(h=hues, l=65, c=100)[1:n])
    cols_rgb <- col2rgb(cols_hex)
    cols_rgb <- apply(cols_rgb, 2, function(x){paste(x, collapse=",")})
    cols <- paste(cols_hex, cols_rgb, sep="; ")
    data <- data.frame(x=1:length(cols), 
                       y=1:length(cols), 
                       cols_hex=cols_hex, 
                       cols_rgb=cols_rgb, 
                       cols=cols)
    ggplot(NULL) +
      geom_point(data=data, 
                 aes(x=x, y=y, colour=cols_hex), size=size, alpha=alpha)
}

ggplot_colors(15, 8, 1)

ここに画像の説明を入力

(248, 118, 109) の RGB 値と F8766D の 16 進数値として、凡例で 00B0F6 の 16 進数値が割り当てられている赤色

4

1 に答える 1

10

引数colour=に色名を指定し、この引数の凡例も表示する場合はscale_colour_identity()、関数の最後の行に追加する必要があります。このスケールにより、指定された値が実際のカラー値として解釈されることが保証されます。breaks=cols_hex関数に引数を追加するとscale()、凡例の名前の順序が保証されます。

ggplot(NULL) +     
geom_point(data=data, aes(x=x, y=y, colour=cols_hex), size=size, alpha=alpha) + 
        scale_colour_identity(guide="legend",breaks=cols_hex)

ここに画像の説明を入力

于 2013-02-18T11:18:57.310 に答える