X軸がラベルが長い因子であるプロットがあります。おそらく理想的なビジュアライゼーションではありませんが、今のところ、これらのラベルを垂直になるように回転させたいと思います。私はこの部分を以下のコードで考え出しました、しかしあなたが見ることができるように、ラベルは完全に見えません。
data(diamonds)
diamonds$cut <- paste("Super Dee-Duper",as.character(diamonds$cut))
q <- qplot(cut,carat,data=diamonds,geom="boxplot")
q + opts(axis.text.x=theme_text(angle=-90))
最後の行をに変更
q + theme(axis.text.x = element_text(angle = 90, hjust = 1))
デフォルトでは、回転しても、軸はテキストの中央に配置されます。あなたが+/- 90度回転させるとき、あなたは通常それを代わりにEdgeに整列させたいです:
上の画像は このブログ投稿 からのものです。
目盛ラベルのテキストを完全に表示し、y軸ラベルと同じ方向に読むには、最後の行を次のように変更します。
q + theme(axis.text.x=element_text(angle=90, hjust=1))
coord_flip()
を使う「R for Data Science」では、WickhamとGrolemundがこの問題について語っています。第3.8章のPosition Adjustmentsでは、次のように書いています。
coord_flip()
はx軸とy軸を入れ替えます。水平ボックスプロットが必要な場合、これは便利です(たとえば)。長いラベルにも便利です。x軸に重ならずに収まるようにするのは難しいです。
これをあなたのプロットに適用して、+ coord_flip()
をggplot
に追加します。
data(diamonds)
diamonds$cut <- paste("Super Dee-Duper",as.character(diamonds$cut))
qplot(cut,carat,data = diamonds, geom = "boxplot") +
coord_flip()
そして今、超ロングタイトルは横に広がっていてとても読みやすいです!
キャンバスの回転機能を導入して以来、私が提案しているものと同様の堅牢なソリューションが ggtern の最新バージョンで必要とされた代替ソリューションを提供したいと思います。
基本的には、角度(つまり度)と位置(つまりx、y、上または右のいずれか)の情報を指定してelement_text
オブジェクトを返す関数を作成することによって、三角法を使用して相対位置を決定する必要があります。
#Load Required Libraries
library(ggplot2)
library(gridExtra)
#Build Function to Return Element Text Object
rotatedAxisElementText = function(angle,position='x'){
angle = angle[1];
position = position[1]
positions = list(x=0,y=90,top=180,right=270)
if(!position %in% names(positions))
stop(sprintf("'position' must be one of [%s]",paste(names(positions),collapse=", ")),call.=FALSE)
if(!is.numeric(angle))
stop("'angle' must be numeric",call.=FALSE)
rads = (angle - positions[[ position ]])*pi/180
hjust = 0.5*(1 - sin(rads))
vjust = 0.5*(1 + cos(rads))
element_text(angle=angle,vjust=vjust,hjust=hjust)
}
率直に言って、私は私の意見では、hjust
とvjust
引数には 'auto'オプションをggplot2
で利用できるようにすべきだと思います。
#Demonstrate Usage for a Variety of Rotations
df = data.frame(x=0.5,y=0.5)
plots = lapply(seq(0,90,length.out=4),function(a){
ggplot(df,aes(x,y)) +
geom_point() +
theme(axis.text.x = rotatedAxisElementText(a,'x'),
axis.text.y = rotatedAxisElementText(a,'y')) +
labs(title = sprintf("Rotated %s",a))
})
grid.arrange(grobs=plots)
これにより、次のようになります。
ggpubr パッケージはデフォルトで正しいことをするショートカットを提供します(テキストを右揃え、中央揃えをテキストボックスに合わせる):
library(ggplot2)
diamonds$cut <- paste("Super Dee-Duper", as.character(diamonds$cut))
q <- qplot(cut, carat, data = diamonds, geom = "boxplot")
q + ggpubr::rotate_x_text()
Representx package (v0.2.1)によって2018-11-06に作成されました
GitHubで適切な引数名を検索しています。 https://github.com/search?l=R&q=element_text+angle+90+vjust+org%3Acran&type = Code