[R] R の hist() でのヒストグラムに、各階級の度数を書き入れる #2

前回の記事では、hist() を使って描いたヒストグラムに、各階級の度数を書き入れました。

ただ、毎回スクリプトを書いているのは面倒なので(?)、上記機能を組み入れたりして hist() を拡張した myhist() を作りました。

基本的には自分用なので、平均点を表す線を引いたりするのも入れてあります。もしもお役に立ちそうでしたらご自由にお使いください。



[R] R の hist() でのヒストグラムに、各階級の度数を書き入れる

やりたいこと:

R で hist() を使って、ヒストグラムを描き、
加えて、各階級の度数を表示する。
つまり、次のような感じ:


なお、データは Rに入っている iris を利用する。

1. やり方

irisの1列目のデータを利用する。今回は、わかりやすさのために、変数d に iris[,1] を代入しておく。つまり、変数d に分析したいデータ (ベクトル) が入っているものとする。ではズバリ、次のように書く:



2. 仕組み

変数infoの中には、次の通り、ヒストグラムを描くための情報が入っている (info で出てくる):

このうち、今回関連のある情報は:
  • $counts が度数
  • $mids が階級値 (階級の真ん中の値)
ですので、
  • x座標 = info$mids
  • y座標 = 1 (この値は任意)
の位置に info$counts を書き入れる (text()) 、ということ。

なお、y座標はお好みで。下にいくつか例をあげておく。

y=info$counts-1


y=info$counts+0.5


y=info$counts/2


  • hist() を拡張した myhist()はコチラ


[Mac] [Excel] Excel for Mac 2011 でガントチャート #6

エクセル (Excel) で作るガントチャート、第6回目です。過去記事はこちら:

  1. [Mac] [Excel] Excel for Mac 2011 でガントチャート #1
  2. 1つのタスクの開始日から終了日までを色づけする
  3. [Mac] [Excel] Excel for Mac 2011 でガントチャート #2
  4. 複数のタスクの開始日から終了日までを色づけする
  5. [Mac] [Excel] Excel for Mac 2011 でガントチャート #3
  6. 年、月、日、曜日を表示する
  7. [Mac] [Excel] Excel for Mac 2011 でガントチャート #4
  8. 「初日 (基準となる日)」から相対的なやり方で表示する
  9. [Mac] [Excel] Excel for Mac 2011 でガントチャート #5
  10. ガントチャートの日付 (初日) を変更しやすくする」


前回はガントチャートの日付 (初日) を変更しやすくするように変更を加えました。今回は:

「タスク名称 (大・中・小) を書き入れるスペースを作る」
のを目標にします。

出来上がりは次のような感じ:


タスク名称は、大項目・中項目・小項目の3つに分けて書き入れられるようにしてみます。中・小項目がインデントされているように表示させましょう。また、コミュニケーション際の便宜のために、タスクに番号 (No.) を振れるようにしておきましょう。

まずは、列Aを選択してから右クリックし、挿入。合計4列分、挿入します。各列を適当な幅に調整します。A列は1.23cm、B・C列は0.6cm、D列は3.49cmにしてあります。
幅は任意ですが、B・Cは狭く、Dは広くしておく


B列に大項目、C列に中項目、D列に小項目を書き入れていくと、中・小項目がインデントされたように見えて、わかりやすいと思います。
(もしも文字列がずれてしまう場合は、「左揃え」にします)

最後に、「タスク名称」のタイトルをB4セルに入力します。この入力された「タスク名称」をB–Dのセルの中央に表示したいのですが、やり方は2つあり、好みの問題になります。
  1. B4–D4セルを「セル結合 (セルを結合し中央揃え)」
  2. B4–D4セルを選択し「セルの書式設定」から横位置を「選択範囲内で中央」
セルの結合は後々で諸所の作業がやりづらくなりがちですので、今回は2つ目のやり方にしておきます。


これで出来上がり。

なお、G5セルを選択して、ウィンドウ枠の固定をしておくと、枠がずれないので便利かもしれません。


[Mac] [Excel] Excel for Mac 2011 でガントチャート #5

エクセル (Excel) で作るガントチャート、第5回目です。過去記事はこちら:

  1. [Mac] [Excel] Excel for Mac 2011 でガントチャート #1
  2. 1つのタスクの開始日から終了日までを色づけする
  3. [Mac] [Excel] Excel for Mac 2011 でガントチャート #2
  4. 複数のタスクの開始日から終了日までを色づけする
  5. [Mac] [Excel] Excel for Mac 2011 でガントチャート #3
  6. 年、月、日、曜日を表示する
  7. [Mac] [Excel] Excel for Mac 2011 でガントチャート #4
  8. 「初日 (基準となる日)」から相対的なやり方で表示する


前回は日付を「初日 (基準となる日)」から相対的なやり方で表示するように変更を加えました。今回は、その相対性を活用すべく:

「ガントチャートの日付 (初日) を変更しやすくする」
のを目標にします。まずは現在の状況を確認しておきましょう。現在はC4セルにだけベタ打ちされた絶対的な日付が入力されており (「2016/11/23」) それ以外のセルは、そのC4のセルの日付を利用して値が表示されています。
C4セルにのみデータのベタ打ち、それ以外はC4セルから相対的に決まる


ということですので、C4セルの値を変更すればすべての日付が自動的に変更されます。

ただ、問題があります。C4セルが2つの役割を担ってしまっています:

  1. ベタ打ちされた「年/月/日」データであり、チャートに表示される初日を決める
  2. 「年/月/日」を具体的に備えた値であるが、「曜日」として表示する
このことによって、初日がわかりづらくなったり、また、時間が経つとC4セルにベタ打ちされた日付によって他の日付も相対的に決定されるということを忘れてしまうかもしれません。是非foolproofにしたいので、1つ目の役割を他のセルに担わせます。

ということで、B2セルに「年/月/日」データをベタ打ちするようにしましょう。そして、そのベタ打ちされたデータをC4セルが参照する、という形にします。では、B2セルに日付を入力し、C4セルに「=B2」と入力します (試しにB2セルには「2016/12/1」と入力しました)

このことによってfoolproof-nessが向上します。初日を変更したい場合は今のB2セルに具体的な日付を入力します。

次はこちら --> [Mac] [Excel] Excel for Mac 2011 でガントチャート #6





[Mac] [Excel] Excel for Mac 2011 でガントチャート #4

エクセル (Excel) で作るガントチャート、第4回目です。過去記事はこちら:

  1. [Mac] [Excel] Excel for Mac 2011 でガントチャート #1
  2. [Mac] [Excel] Excel for Mac 2011 でガントチャート #2
  3. [Mac] [Excel] Excel for Mac 2011 でガントチャート #3


前回は枠組みに関して作業を進めました。1行で表示されていた日付を「年、月、日、曜日」というように4つの要素にバラしました。今回は、少しだけ作業を進めましょう。

「初日 (基準となる日)」から相対的なやり方で表示する
のを目標にします。これまでは「2016/11/23」「2016/11/24」「2016/11/25」...というように絶対的に日付を入力していきました。今回からは「2016/11/23 (初日)」を絶対的に入力したら、「2016/11/24 (初日から1日後)」「2016/11/25 (その日から1日後)」というように初日から1日ずつずらしていく、というやり方で日付を表示します。前回と見た目は変わりませんが、後々になって便利さが増します。

C4セルが初日です (2016/11/23)。その隣のセル (D4) に「=C4+1」と入力します。



そうしたら、D1からD4セルを選択し、右下を横にビーっとドラッグして必要な日数分伸ばしていけば終了です。
見た目は変わりませんが、初日から1日ずつずれた日にちということで曜日が表示されます。

なお、横にドラッグして適当な日数分の枠を作って何ら問題がありませんが、マクロを使って枠を作ることも可能です。今、仮に100日分のマスを追加したいと考えたとします (約3か月)。[ツール->マクロ->Visual Basic Editor] をクリックし、[挿入->標準モジュール] をクリックします。

[ツール->マクロ->Visual Basic Editor]↓↓↓
[挿入->標準モジュール]


ウィンドウが出てくるので、次の文字列を入力 (コピペ) します。
Sub test()
Dim yoko As Integer
yoko = 100

Range("D1:D4").Select
Selection.AutoFill Destination:=Range(Selection, Selection.Offset(0, yoko)), Type:=xlFillDefault
End Sub
それから、再生ボタン (または Fn + F5) を押すと、100日分横にビーっとドラッグしたのと同じことが起きています。
再生ボタン (Fn + F5) を押すと↓↓↓


なお、上にスクリプトの3行目「yoko = 100」の「100」を「200」にすれば200日分追加されますし、「30」にすれば30日分追加されます。作成したいガントチャートにはどれくらいの作業日程が必要かを考えて、適当な値を入力します。

最後に列の幅を調整して、出来上がりです。



次はこちら --> [Mac] [Excel] Excel for Mac 2011 でガントチャート #5



[Mac] [Excel] Excel for Mac 2011 でガントチャート #3

エクセル (Excel) で作るガントチャート、第3回目です。過去記事はこちら:

  1. [Mac] [Excel] Excel for Mac 2011 でガントチャート #1
  2. [Mac] [Excel] Excel for Mac 2011 でガントチャート #2


前回は「複数のタスクの開始日から終了日までを色づけ」しました。ガントチャートの肝である色づけが終わったので、これからは、枠組みを作りこんでいきましょう。ということで今回は

年、月、日、曜日を表示する
のを目標にします。出来上がりは次のような感じ:


前回まで一行に「2016/11/23」のように表示していた部分を、「年、月、日、曜日」の4つの要素にバラしていきます。

まず、4つの要素を縦に並べるため、3行分の空欄を作りましょう。A1のセルを選択し、[挿入->行]をクリックします。空欄の行が挿入され、全体が一つ下に下がります。これをもう2回繰り返します。
この作業を合計3回行う


次に、C1, C2, C3 各セルに「=C4」と入力します。そうすると、C1からC4のセルまで全てのセルに「2016/11/23」と表示されます。
C1からC3まで全てに「=C4」と入力すると、全てのセルに「2016/11/23」と表示される


ここから、それぞれのセルに異なる作業をします。まず一番上のC1セルを選択し、セルの書式設定 (Command + 1) を開きます。[表示形式->ユーザー定義]から、種類に「yyy」と入力し、OKをクリック。そうすると、C1のセルの表示が「2016」になります (年 year が表示される)。
種類に「yyy」で年


次はC2セルを選択し、セルの書式設定。今度は種類に「m」と入力し、OKをクリックすると、C2のセルの表示が「11」になります (月 month が表示される)。
種類に「m」で月


同様に、C3セルでは「d」、C4セルでは「aaa」と入力すると、それぞれ日付と曜日が表示されます。
種類に「d」で日付
種類に「aaa」で曜日


あとはこれを横に広げていきます。C1からC4のセルを選択し、右下のポチを右側にドラッグしていきます。今回は列Mまで伸ばしてみました (もちろんもっと伸ばせます)。
(例えば)列Mまでドラッグすると... ↓↓↓


このままでも良いのですが、「2016 (年)」と「11 (月)」が少しうるさいです。毎日ではなくて、毎月1日だけに表示されるようにしてみましょう。C2セルを選択し、
=IF(DAY(C4)=1, C4, "")
と入力します。C1にも全く同じ式を入力します。そうしたら、C1とC2セルを選択し、また右側までビーっと伸ばしていきます。そうすると、「2016/12/1」のところだけ、「2016」「12」が表示され、それ以外のところでは年も月も表示されません。
列Kは1日なので、そこだけに「2016」と「12」が表示される


現状ではセルの幅が広すぎるので、狭くしていきましょう。列Cから列Mまでを選択し適当な列の境界をダブルクリックします。そうすると、自動的に列の幅が最小になります。
すると...↓↓↓
各列幅が最小化された


「2016」が入力されている列だけ少し幅広なので、他の列もここと同じ幅にしましょう。K列を選択し、右クリックし、[列の幅...]選択し、表示される列の幅をコピー (Command + c) します。キャンセルしてから、次に、列Cから列Mまでを選択し、右クリック、[列の幅...]をクリックし、Command + v で貼り付け、OK。そうすると、列の幅が揃い、綺麗に見えます。


折角なので、Command + e で文字列を中央に表示させておきましょう。これで出来上がり。だんだんそれらしくなってきました。

次はこちら --> [Mac] [Excel] Excel for Mac 2011 でガントチャート #4



[Windows] AutoHotKey その2

職場の Windows PC に AutoHotKey というソフトを導入して、キーバインドを変更 したら、ものすごくキー入力が楽になった。ホームポジションから手をはずさずに上下左右、行頭・行末にカーソルを移動させたり、文字を削除したりできる。ストレスフリー。 カーソル移動系...