0

これはここでの私の最初の投稿です、私が自分自身を明確にできることを願っています!私は自分のggplotに非常に微妙な変更を加えようとしています。SDをエラーバーとして表示して(x、y)を中心に十字線をプロットしていますが、スケールと線の種類が複雑になっています。各行が多くの行の集合体であるデータフレーム(z)があります。各行は、独自の色の十字線としてggplotにプロットされますが、データフレームの一部の行は法線としてプロットされ、他の行は破線でプロットされる必要があります。2つの列groupnumとgroupttlには、それぞれ色とラベルの数値があり、色に加えて、スケールに表示する必要があります。また、スケールバーに線種を表示したいと思います。しかし、私はまだこれを理解することができません!

これが私のコードが行っていることです:

chp <- ggplot(data=z,aes(x=x,y=y,colour = group,group = group,linetype=factor(othr))) + 
    theme_bw() + #remove background
    xlab(m1) +
    ylab(m2) +
    geom_errorbar(aes(ymin = y - ySD, ymax = y + ySD, linetype = factor(othr))) + 
    geom_errorbarh(aes(xmin = x - xSD, xmax = x + xSD, linetype = factor(othr))) +
    guides(linetype=FALSE) + #remove the legend added by linetype
    scale_colour_manual(name=hierarchyname, values=factor(unique(groupnum))) + #add colors manually
    scale_linetype_manual(values = factor(unique(othr)))

注:othrには2つの値(1,2)しかありません。通常と破線の2種類の線だけを表示したいと思います。

私が見つけた最も近い一致はこれです:線種を持つ変数をggplot線種に渡す

彼らが言うところの秘訣は、scale_linetype_manual(values = lty)と組み合わせてline_type=geographyを使用することです。しかし、私の場合、違いは、各行に独自の線種を持たせたくないということです。必要なのは2つだけです。

これについての提案をいただければ幸いです。さらに情報が必要な場合はお知らせください。ありがとうSP


Ok。提案をありがとう。これが私のデータフレームです

"groupnum","group","N","x","y","xSE","ySE","xSD","ySD","othr"
"1",1,"a1",874,9.31080482242276,3.78151559519843,0.000919599013717256,0.0010731700399164,0.803729537988882,0.93795061488693,1
"2",2,"a2",323,9.32858454311781,3.85117814673799,0.00434633223522011,0.00262887468315802,1.4038653119761,0.84912652266004,1
"3",3,"a3",401,8.65698443874862,3.61961141000158,0.00320566652230181,0.0024382624307443,1.28547227544303,0.977743234728466,1
"4",4,"a4",364,8.02722008290545,4.03272290234161,0.00664827121575061,0.00285893561941909,2.41997072253322,1.04065256546855,1
"5",5,"a5",2117,9.38192555351799,3.39287371184691,0.000317738758329197,0.000433382027761261,0.672652951382911,0.917469752770589,1
"6",6,"a6",347,9.2600568761331,3.34027019277033,0.00105036291416114,0.0024058297735207,0.364475931213916,0.834822931411683,1
"7",7,"a7",782,9.26685442279479,3.32913948807558,0.000672770018741615,0.00103475341970955,0.526106154655943,0.809177174212869,1
"8",9,"a8",335,9.33774697202318,3.83086473063289,0.0022406672509349,0.0033135194052142,0.750623529063193,1.11002900074676,1
"9",10,"a9",588,9.2362799520667,3.79905936514298,0.000648139660555769,0.00112763352751969,0.381106120406792,0.663048514181577,1
"10",8,"b1",631,9.39770259697672,3.49584647787853,0.00147287975375933,0.00176346535893738,0.929387124622137,1.11274664148949,2

コマンドを使用して読み取ることができます

read.table(file = "zp.txt",sep = ",", header = TRUE, stringsAsFactors = FALSE)

別の要件は次のとおりです。使用したい

scale_colour_hue(name=hierarchyname, # Legend label, use darker colors
             breaks=unique(group),
             labels=unique(group),#add the legend for all groups
             l=50,       # Use darker colors, lightness=50
             c=100)        #chroma (intensity of color)

より良い色のためにscale_colour_manualの代わりに、しかし、これは二次的な問題です、最初に私はスケールを修正したいです!

わかりました、それも編集できました!ありがとうSP

4

1 に答える 1

4

チェックするデータフレームがないzと知ることは不可能ですが、次のように変更すればこれでうまくいくと思います。

 scale_linetype_manual(values = factor(unique(othr))

 scale_linetype_manual(values =c(1,2))

編集

以下はあなたが望むものを作るようです:

chp <- ggplot(data=z,aes(x=x,y=y,colour = group, linetype=as.factor(othr))) + 
  geom_errorbar(aes(ymin = y - ySD, ymax = y + ySD)) + 
  geom_errorbarh(aes(xmin = x - xSD, xmax = x + xSD)) +
  theme_bw() +
  guides(linetype=FALSE)
chp

ここに画像の説明を入力してください


なしguides(linetype=FALSE)ここに画像の説明を入力してください


手動ソリューション

これにより、カラースケールの凡例の線種を指定できます。

guides(colour=guide_legend(override.aes=list(linetype=c(2,rep(1,times=9))))) 

override.aes引数をguide_legend()使用すると、リスト内の凡例の特性を調整できます。したがってlinetype、2と9として指定されます(破線はlinetype=2、実線はlinetype = 1)。これが私が手動で意味することです。

ここに画像の説明を入力してください

于 2013-02-25T04:09:50.520 に答える