[掲示板へもどる]
一括表示

  [No.577] メモ: 共起ネットワークのカスタマイズ【Cytoscape編】 投稿者:HIGUCHI Koichi  投稿日:2010/01/16(Sat) 00:38:11
メモ: 共起ネットワークのカスタマイズ【Cytoscape編】 (画像サイズ: 950×700 52kB)

KH Coderで作成した共起ネットワークをカスタマイズしたいというケースは、
しばしばあるのではないかと思います。語と語が重なってしまって細部を読み
取りにくいので、なんとかしたいという場合。あるいは、他の手法での自動配
置をあれこれ試してみたい場合もあるでしょう。

そんな場合には、R形式で共起ネットワークを保存して、Rを使ってあれこれ試
してみるというのが1つの方法です。
[ご参考1] http://khc.sourceforge.net/scr_r.html#using_plots
[ご参考2] http://khcoder.info/cgi-bin/bbs_khn/khcf.cgi?no=549&mode=allread
これらのURLの他、鈴木努先生の『ネットワーク分析(Rで学ぶデータサイエン
ス8)』も大変参考になるでしょう。この書籍、鈴木先生よりご恵与いただき
ました。ありがとうございました。
[Amazon 当該書籍] http://www.amazon.co.jp/dp/4320019288


以上のようにRを使うのも1つの方法ですが、ネットワーク分析・可視化の専用
ソフトウェアを使った方が、より手軽に、いろいろなことが行える場合がある
かもしれません。今回は「Cytoscape」というネットワーク可視化・分析プロ
グラムとKH Coderの連携について調べたので、簡単ですが以下にメモしておき
ます。
[Cytoscape] http://www.cytoscape.org/

※1 社会学の分野ではCytoscapeよりもPajekの方がポピュラーだと思いますが、
残念ながらPajekでは日本語ラベルの表示ができないようなので、今回はパス
しました。

さて、少々面倒ではありますが、以下のような手順を踏むことで、KH Coderで
作成した共起ネットワークをCytoscape上に読み込むことができます。添付画
像は、KH Coderチュートリアルに添付の漱石「こころ」から作成した共起ネッ
トワークを、Cytoscapeに読み込んだところです。

手順:
(1) KH Coderで「共起ネットワーク」を作成して、これをR形式で保存
(2) Rを起動して、(1)で保存したファイルを読みこみ、Cytoscape向けにデータを保存
(3) Cytoscapeを起動して、(2)で保存したデータを読み込む

(2)についての補足として、KH Coderに添付のRは、「kh_coder.exe」がある場
所から見て、「dep\R\bin\Rgui.exe」をダブルクリックすることで起動できま
す。また、(1)で保存した「*.r」ファイルをRのコンソールにドラッグアンド
ドロップすることで、当該ファイルを読み込むこと(実行)ができます。

そしてRのメニューから「ファイル」→「ディレクトリの選択」をクリックし
て、任意の場所(ディレクトリ)を選択して下さい。この操作の後に以下の2
つのコマンドを実行すると、選択した場所(ディレクトリ)にファイルが保存
されます。
write.table(el2,"cytoscape-network.txt",row.names=F,col.names=F,quote=F)
write.table(rownames(d), "cytoscape-node-attribute.txt",quote=F,sep="=")

(3)についてですが、Cytoscapeからは「File」→「Import」→「Network from
Table」をクリックして、「cytoscape-network.txt」を読み込んで下さい。
そして、「Source Interaction」に「Column 1」を、「Target Interaction」
に「Column 2」を選択します。さらに「Column 3」の上で左クリックして、「
Column 3」を青くして、「Import」をクリックします。
※Column 3の内容はJaccardの類似性測度です。数値が大きいほど、共起の度
合いが強くなります。

さらにCytoscapeで、「File」→「Import」→「Node Attributes」をクリック
して、「cytoscape-node-attribute.txt」を読み込みます。そしてCytoscape
内のViz Mapperで、「Node Label」をIDからxに変更すると、各ノードのラベル
が番号表示から語に変わります。

以上でCytoscapeにデータを読み込むことができます。Cytoscapeの様々なグラ
フ描画機能を試してみると、おもしろいかもしれません。今後余裕があればも
う少しCytoscapeを個人的に触ってみたいと思います。そして、もし「Cytosca
peは役立つ」という気がしてきたら、もう少し簡単にCytoscapeにデータを出
力できるようにKH Coderに手を加えるかもしれません。


  [No.692] Re: メモ: 共起ネットワークのカスタマイズ 投稿者:nncoder  投稿日:2010/11/29(Mon) 14:31:01

フォーラムの過去記事から示唆を得ようと徘徊していましたら、本記事に辿り着きました。
興味深かったため、Cytoscapeを用いての共起ネットワークのカスタイマイズに挑戦してみました。

KH CoderでEdge数を多くとって共起ネットワークを生成すると、どうしても円が重なったり、ごちゃごちゃしてしまって細かい中身までマップ上で追っていく事が出来ず、データを分割しながら試していたところですが、この方法ですとRの結果から自由にネットワーク上での分析が進むのですね。

Cytoscape上での描画機能が秀逸で、色々な角度からネットワークベースでの視点が手に入るのは面白いところで、またJaccardと連動させてのEdgeの太さの変更やNodeやEdgeでフィルタをかけてのネットワークの掘り下げをどんどん進められるの形で非常に助かっています。


使っていて1つだけご教授頂けたらという点があります。

KH Coder元々の共起ネットワークで実現されていて、上記だとフォロー出来なかった点として「出現頻度による円のサイズ調整」があるかと思います。

上記説明では各ノード間の関係(2点)とJaccard係数、語ラベルと4つの情報をCytoscapeに取り込んでいる形ですが、ここにもう1つ各語の出現頻度数を取り込んでCytoscapeの属性指定によりNode Sizeを指定して出現頻度による円のサイズ調整を実現したいと思っています。

Rの結果からwrite.tableで抽出すればいいと思っているのですが、どうも上手く抽出されず詰まっています。


もしよろしければ各語の出現頻度を出力する方法をご教授頂ければと思います。

よろしくお願いいたします。


  [No.693] Re: メモ: 共起ネットワークのカスタマイズ 投稿者:HIGUCHI Koichi  投稿日:2010/11/30(Tue) 00:10:50

こんにちは、樋口です。書き込みありがとうございます。

> Rの結果からwrite.tableで抽出すればいい

まさしくお書きの通りです。

(JGRをインストールしたりして)せっかくRを触っていらっしゃるのですから、
KH Coderが保存する共起ネットワークのRコマンドをご覧になって、コマンド
を工夫・試行錯誤されてみてはいかがでしょうか。

以下はヒントですが、最後のplot.igraphコマンドでKH Coderはグラフを描画
しています。このコマンドのvertex.sizeオプションで円のサイズを指定して
います。このオプションで指定されているのは、v_sizeというRオブジェクト
ですね。このv_sizeを検索して、これがどのように作成されているかを見ていた
だけば…、きっとなんとかなるのではないでしょうか。


  [No.694] Re: メモ: 共起ネットワークのカスタマイズ 投稿者:nncoder  投稿日:2010/11/30(Tue) 15:17:27

ヒントありがとうございます。

色々と試行錯誤してみたものの、各ノード一意に抽出することが出来ず一旦ギブアップです。

今後の課題として時間のある時に取り組んでみます。

ありがとうございました。


  [No.695] Re: メモ: 共起ネットワークのカスタマイズ 投稿者:HIGUCHI Koichi  投稿日:2010/11/30(Tue) 19:20:18

# うまく行くまで試行錯誤するくらいの気合いがあった方が、RのようなCUIは
# ものにしやすいと思いますが、しかし、それはお仕事の主な目的と関係が薄
# いのかもしれませんね…。

ともあれ「v_size」を検索してみると、その計算には「freq」というリストが
使用されていることが分かると思います。そこでさらに「freq」を検索してみ
ると、これがまさに「頻度計算」の結果を格納しているリストであることが分
かります。

このfreqの内容を上手く出力できればそれで良いわけです。ここで、ノード名
(抽出語)を出力したときには、以下のようにしていました。
write.table(rownames(d), "cytoscape-node-attribute.txt",quote=F,sep="=")

「rownames(d)」を出力していたわけです。「print( rownames(d) )」を実行
すれば、その中身を見ることができます。同じように「print( freq )」を実
行して中身を見てみましょう。rownames(d)とfreqは同じ形をしているので、
同じように出力すれば良いことが分かります。
write.table(freq, "freq.txt",quote=F,sep="=")

ただし、これでは列名が「cytoscape-node-attribute.txt」でも「freq.txt」
でも同じ「x」となってしまってCytoscape上での都合がよくありません。
「freq.txt」をメモ帳などのエディタで開いて列名の「x」を「frequency」
といったものに変更すると良いでしょう。

あるいは、以下のようにデータフレーム化することで、出力時に列名を変えて
おくのが、よりスマートなやり方でしょう。
write.table(data.frame(freqency=freq), "freq.txt",quote=F,sep="=")

あとはCytoscapeからnode attributeとしてfreq.txtを読み込めば完了です。


  [No.696] Re: メモ: 共起ネットワークのカスタマイズ 投稿者:nncoder  投稿日:2010/12/01(Wed) 11:16:18

なんと…!
まさか答えが出てしまうとは思いませんで…。

ヒントの意図としても「魚を与えるより釣り方を教えよ」という事と受け止めて、こりゃちゃんとソースを読み解いて中で何をやっているか理解しないと難しいなということで、週末あたりにボチボチ出力されたRソースを読み解こうと思っていたところでした。

単純にv_sizeの抽出では、表示するノードのみのサイズになっているらしいことはわかったので、全ノードのサイズ抽出は、表示させるノードを抽出しているあたりを押さえたらいいのではないかと考え、v_sizeの計算中にフィルタしているか、igraphのプロット時にn2に帰属してフィルタがかかっているかかなあとぼんやりソースを読み始め、一旦立ち止まって考えなきゃだなと。

そもそも表示をCytoscapeにするならプロットロジックは外して、計算ロジックを抽出してAttributeではなく、統合して一つのデータテーブルの中に入れ込みたいなあ、そうすると中身ちゃんと理解して組み立てないとだなあとそんなことを思って、場当たり的な対処は一旦ストップと思った次第です。


なにはともあれ解決策ありがとうございます。

せっかく頂いた機会なので、時間をかけてカスタマイズしていこうと思います。


  [No.697] Re: メモ: 共起ネットワークのカスタマイズ 投稿者:HIGUCHI Koichi  投稿日:2010/12/01(Wed) 12:43:24

ちょっと「答え」を出すのが早すぎたかもしれませんね。失礼いたしました。

なにはともあれ今後のご健闘を祈ります。


  [No.741] メモ: 共起ネットワークのカスタマイズ【Gephi編】 投稿者:HIGUCHI Koichi  投稿日:2011/01/24(Mon) 23:30:26

メモ: 共起ネットワークのカスタマイズ【Gephi編】 (画像サイズ: 1236×923 92kB)

関西計量社会学研究会で久しぶりにお会いした大阪市立大学の先生に、「Geph
i」というネットワーク描画・探索ソフトウェアをお教えいただきました。ま
だ少ししか触っていませんが、面白そうなツールですので、KH Coderで作成し
た共起ネットワークをこのツールで編集する手順を以下にメモしておきます。

基本的な手順はCytoscapeの場合と同じで、以下の3段階になります:
(1) KH Coderで「共起ネットワーク」を作成して、これをR形式で保存
(2) Rを起動して、(1)で保存したファイルを読みこみ、Gephi向けにデータを保存
(3) Gephiを起動して、(2)で保存したデータを読み込む

(2)についての補足として、KH Coderに添付のRは、「kh_coder.exe」と同じ場
所にある「Rgui.bat」をダブルクリックすると起動します。また、また、(1)
で保存した「*.r」ファイルをRのコンソールにドラッグアンドドロップするこ
とで、当該ファイルを読み込むこと(実行)ができます。

そしてRのメニューから「ファイル」→「ディレクトリの選択」をクリックし
て、任意の場所(ディレクトリ)を選択して下さい。この操作の後に以下のコ
マンドを実行すると、選択した場所(ディレクトリ)にファイルが保存されま
す。

#---------------------------------------------------------------------
# Nodes
write.table( 
    data.frame( 
        id=1:nrow(d),
        Label=rownames(d),
        Freq=freq
    ),
    "gephi-nodes.csv",
    col.names = T,
    row.names = F,
    quote     = F,
    sep       = ",")
 
# Edges
write.table( 
    data.frame( 
        source = el2$edge1,
        target = el2$edge2,
        Weight = el2$weight,
        type   = "undirected"
    ),
    "gephi-edges.csv",
    col.names = T,
    row.names = F,
    quote     = F,
    sep       = ",")
 
#---------------------------------------------------------------------

(3)についてですが、Gephiの「Data Laboratory」画面で「Inport CSV」をク
リックします。「Nodes table」としてgephi-nodes.csvを、「Edges table」
としてgephi-edges.csvを読み込みます。この際、文字コード(Charset)は
Shift_JISにしておきましょう。

「Nodes table」としてgephi-nodes.csvを読み込むときには、Freqカラムを
「Integer」として読み込むと良いでしょう。このカラムにはそれぞれの語の
出現数が入っているからです。また、「Import settings」画面の一番下の部
分で、「Assign a new id to a node when it already exists in table」の
チェックを外しておきましょう。

以上で、Gephiにデータを読み込むことができます。Gephiのチュートリアルは
なかなか良くできていて、楽しく入門できる感じです。


  [No.1195] メモ: 共起ネットワークのカスタマイズ【VOSviewer編】 投稿者:HIGUCHI Koichi  投稿日:2012/11/24(Sat) 16:53:41

メモ: 共起ネットワークのカスタマイズ【VOSviewer編】  (画像サイズ: 1215×1134 66kB)

KH Coderで作成した共起ネットワークを「VOSviewer」で表示・編集する手順
を以下にまとめておきます。「VOSviewer」は操作性に優れ、出力も綺麗なツ
ールです。レイアウトやクラスタリングは独自手法のみのようですが、シンプ
ルな分、操作も容易になっているかと思います。

手順の概要はいつも通りです:
(1) KH Coderで「共起ネットワーク」を作成して、これをR形式で保存
(2) Rを起動して、(1)で保存したファイルを読みこみ
(3) RからVOSviewer向けにデータを保存
(4) VOSviewerを起動して、(3)で保存したデータを読み込む

(1)と(2)の手順については、こちらのスライド前半をご覧ください。
http://www.slideshare.net/khcoder/r2kh-coder

(3)については、まずRのメニューから「ファイル」→「ディレクトリの選択」
をクリックして、任意の場所(ディレクトリ)を選択して下さい。この操作の
後に以下のコマンドを実行すると、選択した場所(ディレクトリ)にファイル
が保存されます。※Rのメニューが英語表示されている場合は「File」→「Cha
nge dir」です。

#---------------------------------------------------------------------
# Nodes
write.table( 
    data.frame( 
        id    =1:nrow(d),
        label =rownames(d),
        weight=freq
    ),
    "vos_map.txt",
    col.names = T,
    row.names = F,
    quote     = F,
    sep       = ","
)

# Edges
write.table( 
    data.frame( 
        source = el2$edge1,
        target = el2$edge2,
        weight = el2$weight
    ),
    "vos_net.txt",
    col.names = F,
    row.names = F,
    quote     = F,
    sep       = ","
)

#---------------------------------------------------------------------

(4) VOSviewer上で「Action」「Map」「Create」をクリックして、上の(3)で
作成したvos_map.txtとvos_net.txtを読み込みます。

なお、データが英語の場合は、英語テキストファイルを直接VOSviewerに読み
込ませて、共起ネットワークを作成することができます。


  [No.1196] Re: メモ: 共起ネットワークのカスタマイズ【VOSviewer編】 投稿者:Kenichi Yamamura  投稿日:2012/11/26(Mon) 18:56:40

手作業でもMap,Networkファイルを作って試してみようかと思っていた間にKH CoderでのVOSviewer用のファイル作成手順をご教示頂きありがとうございます。
例示の図からVOSviewerが日本語を含むデータ読み込み・表示にも対応していることが確認できました。


  [No.1198] Re: メモ: 共起ネットワークのカスタマイズ【VOSviewer編】 投稿者:HIGUCHI Koichi  投稿日:2012/11/26(Mon) 20:38:23

こんにちは、樋口です。書き込みありがとうございます。

https://twitter.com/Ken_Yamamura
こちらでのつぶやきからVOSviewerについて知ることができました。
お礼申し上げます。

はい、日本語テキストを直接読み込むのは難しいようですが、ネットワーク
データならば日本語ラベルも問題なく表示できるようです。


  [No.1200] Re: メモ: 共起ネットワークのカスタマイズ【VOSviewer編】 投稿者:ytaka  投稿日:2012/11/27(Tue) 14:16:45

突然の書き込み失礼いたします。
現在、関東のほうの大学の卒論でKH coderをつかわさせて頂いているものです。
先日の掲示板の更新でVOSviewerでの可視化の方法が上がっていたので早速試させていただきました。
その際、はじめは成功したのですが2回目以降から以下のエラーが出てテキストファイルが2つ作成されず困っています。

Error in data.frame(id = 1:nrow(d), label = rownames(d), weight = freq)
object 'freq' not found

作成されないのはvos_map.txt です。

お忙しい中申し訳ありませんが、回答を頂ければと思います。
よろしくお願いいたします。


  [No.1202] Re: メモ: 共起ネットワークのカスタマイズ【VOSviewer編】 投稿者:HIGUCHI Koichi  投稿日:2012/11/27(Tue) 20:26:50

こんにちは、樋口です。書き込みありがとうございます。

KH Coder上で共起ネットワークを作成する際に、「出現数の多い語ほど大きい
円で描画」にチェックを入れるようにして下さい。すみません、書き忘れてい
ました。


  [No.1203] Re: メモ: 共起ネットワークのカスタマイズ【VOSviewer編】 投稿者:ytaka  投稿日:2012/11/28(Wed) 13:09:27

回答ありがとうございました。
無事作成することができました。

お忙しい中お時間を取っていただき本当にありがとうございました。


  [No.1793] Re: メモ: 共起ネットワークのカスタマイズ【VOSviewer編】 投稿者:ytake  投稿日:2014/09/09(Tue) 21:54:59

お世話になっております。
いつも利用させていただいております。
VOSviewer へのカスタマイズを試みているのですが、
textファイルを読み込んだところ、VOSviewer側で以下のエラーが出現し、
図表化することができませんでした。

「Error while reading VOSviewer mapfile:X and Y columns are missing」

ご教授いただけると大変助かります。
宜しくお願いいたします。


  [No.1794] Re: メモ: 共起ネットワークのカスタマイズ【VOSviewer編】 投稿者:HIGUCHI Koichi  投稿日:2014/09/09(Tue) 22:30:42

こんにちは、樋口です。書き込みありがとうございます。

手元で試してみたところ、特に問題なく実行できるようでした。

漱石「こころ」データで上手くいくかどうか、試してみると良いかもしれ
ません。「こころ」で上手くいかないようだと、上記の手順と何か操作が
違っているのかもしれません。

また、VOSViewerの作者にたずねてみるのも一手でしょう。


  [No.1404] メモ: 共起ネットワークのカスタマイズ【Pajek編】 投稿者:HIGUCHI Koichi  投稿日:2013/09/30(Mon) 01:18:50

メモ: 共起ネットワークのカスタマイズ【Pajek編】 (画像サイズ: 599×578 3.6MB)

その後、Pajekが日本語ラベルの表示に対応したようです。KH Coderで作成し
た共起ネットワークを「Pajek」で表示・編集する手順を以下にまとめておき
ます。

手順の概要はいつも通りです:
(1) KH Coderで「共起ネットワーク」を作成して、これをR形式で保存
(2) Rを起動して、(1)で保存したファイルを読みこみ
(3) RからPajek向けにデータを保存
(4) Pajekを起動して、(3)で保存したデータを読み込む

(1)と(2)の手順については、こちらのスライド前半をご覧ください。
http://www.slideshare.net/khcoder/r2kh-coder

(3)については、まずRのメニューから「ファイル」→「ディレクトリの選択」
をクリックして、任意の場所(ディレクトリ)を選択して下さい。この操作の
後に以下のコマンドを実行すると、選択した場所(ディレクトリ)にファイル
が保存されます。※Rのメニューが英語表示されている場合は「File」→「Cha
nge dir」です。

#---------------------------------------------------------------------
n3 <- set.vertex.attribute(
    n2,
    "id",
    (0+new_igraph):(length(get.vertex.attribute(n2,"name"))-1+new_igraph),
    colnames(d)[ as.numeric( get.vertex.attribute(n2,"name") ) ]
)

n3 <- set.vertex.attribute(
    n3,
    "xfact",
    (0+new_igraph):(length(get.vertex.attribute(n2,"name"))-1+new_igraph),
    v_size * 0.5
)

n3 <- set.vertex.attribute(
    n3,
    "yfact",
    (0+new_igraph):(length(get.vertex.attribute(n2,"name"))-1+new_igraph),
    v_size * 0.5
)

write.graph(n3, "pajec.net", format="pajek")
#---------------------------------------------------------------------

(4)Pajekを起動して、「File」「Network」「Read」とたどって、上の(3)で保
存したファイルを開きます。


  [No.1410] Re: メモ: 共起ネットワークのカスタマイズ【Pajek編】 投稿者:渡辺(早大院)  投稿日:2013/10/04(Fri) 18:03:42

樋口先生

こんにちは。ICPSRセミナーでお話させていただいた早稲田大学大学院の渡辺です(KH CoderのMac対応についてうかがったものです)。その節は貴重なお話をありがとうございました。

KH Coder + Pajekで3Dグラフを作成してみたのですが、添付の画像のような自動回転の方法がわかりません。些末な点ですが、操作方法を教えていただけないでしょうか。よろしくお願いいたします。




> その後、Pajekが日本語ラベルの表示に対応したようです。KH Coderで作成し
> た共起ネットワークを「Pajek」で表示・編集する手順を以下にまとめておき
> ます。
>
> 手順の概要はいつも通りです:
> (1) KH Coderで「共起ネットワーク」を作成して、これをR形式で保存
> (2) Rを起動して、(1)で保存したファイルを読みこみ
> (3) RからPajek向けにデータを保存
> (4) Pajekを起動して、(3)で保存したデータを読み込む
>
> (1)と(2)の手順については、こちらのスライド前半をご覧ください。
> http://www.slideshare.net/khcoder/r2kh-coder
>
> (3)については、まずRのメニューから「ファイル」→「ディレクトリの選択」
> をクリックして、任意の場所(ディレクトリ)を選択して下さい。この操作の
> 後に以下のコマンドを実行すると、選択した場所(ディレクトリ)にファイル
> が保存されます。※Rのメニューが英語表示されている場合は「File」→「Cha
> nge dir」です。
>
> #---------------------------------------------------------------------
> n3 <- set.vertex.attribute(
> n2,
> "id",
> (0+new_igraph):(length(get.vertex.attribute(n2,"name"))-1+new_igraph),
> colnames(d)[ as.numeric( get.vertex.attribute(n2,"name") ) ]
> )
>
> n3 <- set.vertex.attribute(
> n3,
> "xfact",
> (0+new_igraph):(length(get.vertex.attribute(n2,"name"))-1+new_igraph),
> v_size * 0.5
> )
>
> n3 <- set.vertex.attribute(
> n3,
> "yfact",
> (0+new_igraph):(length(get.vertex.attribute(n2,"name"))-1+new_igraph),
> v_size * 0.5
> )
>
> write.graph(n3, "pajec.net", format="pajek")
> #---------------------------------------------------------------------
>
> (4)Pajekを起動して、「File」「Network」「Read」とたどって、上の(3)で保
> 存したファイルを開きます。


  [No.1411] Re: メモ: 共起ネットワークのカスタマイズ【Pajek編】 投稿者:HIGUCHI Koichi  投稿日:2013/10/04(Fri) 23:22:00

こんにちは、樋口です。
その節は、立命館まではるばるお越しいただきありがとうございました。

Pajekですが、単にキーボードの「y」を押し続けているだけでして、「自動回
転」というわけではないかもしれません。他にもキーボードの「x」「z」を押
し(続け)たり、Shiftと一緒に押すと、いろいろな回転が可能です。


  [No.1416] Re: メモ: 共起ネットワークのカスタマイズ【Pajek編】 投稿者:渡辺(早大院)  投稿日:2013/10/05(Sat) 18:02:35

樋口先生

早速のご回答ありがとうございます。
これまでスクロールバーを表示させて回転させていたため、大変助かりました。

> こんにちは、樋口です。
> その節は、立命館まではるばるお越しいただきありがとうございました。
>
> Pajekですが、単にキーボードの「y」を押し続けているだけでして、「自動回
> 転」というわけではないかもしれません。他にもキーボードの「x」「z」を押
> し(続け)たり、Shiftと一緒に押すと、いろいろな回転が可能です。