RuntaScience diary

気象系データを扱う学生 旅が好きです

【卒論・修論】見出しの設定(目次の作成~階層構造)

f:id:RuntaScience:20210103083343p:plain

みなさん、こんにちは!

今日は見出しの設定方法についてお話ししていきたいと思います。

レポートや卒論修論作成では見出しを設定すると思います。しかし、この操作に慣れていないと提出間近で焦ることになります。

大学1〜3年生は日頃のレポートで、見出し作成の練習をしていきましょう。

 

対象

  • レポートを書いている学生
  • 卒論修論を書いている学生
  • Wordの見出し・目次設定に苦戦している人

 

 

 

目次の作成

まずは目次を作成していきます。

卒論修論を例とします。

見出しの設定

序論に1、方法に2、、、とする前に

見出しの設定を確認&編集します。

見出し1(章)フォント16

見出し2(節)フォント14

とします。

f:id:RuntaScience:20210103080028p:plain

 

見出しの設定が終わったら、新しいページに目次を挿入します

f:id:RuntaScience:20210103080037p:plain

 

目次を挿入したら、それぞれの章(序論〜結論)に見出しをつけていきます。

f:id:RuntaScience:20210103080048p:plain

 

目次の設定

まず、目次を更新します。

f:id:RuntaScience:20210103080113p:plain

 

次に、見出しの頭に番号をつけていきます。

段落>番号のマーク

を押して、お好みの見出し番号を設定します。

 

番号を設定したら、目次目次を見出しから標準に設定して、更新します。

f:id:RuntaScience:20210103080129p:plain

見出しの番号詳細設定

見出しの詳細設定は、以下のようにできます。

さらに詳細を設定するには、オプションを選択しましょう

f:id:RuntaScience:20210103080444p:plain

 

見出しのインデント詳細設定

見出しを2まで本文中で選択すると、見出し3までできます。

見出し3はインデントが初期設定でされているので、0字にすると、本文では左寄りの見出しになります。

f:id:RuntaScience:20210103080150p:plain

 

階層構造

卒論や修論では深い階層構造を作成することがあります。

先程の目次の設定のように、それぞれに見出し3や見出し4をつけていきます。

f:id:RuntaScience:20210103080307p:plain

 

目次の見出し4・見出し5など

見出しの階層を深くすると、目次に表示されません。

その時は、見出しの設定で、アウトラインレベルを4や5にして、目次を更新します。

 

f:id:RuntaScience:20210103080319p:plain

 

 

章番号なしの見出し

章番号を付けない見出しがあると思います。それは、参考文献や謝辞などです。

 

まず、目次の設定でもあったように見出し1を設定します。

次に番号書式をなしに設定します

そして目次を更新するとできているはずです。

f:id:RuntaScience:20210103080328p:plain

f:id:RuntaScience:20210103080336p:plain

 

最終更新日2021/1/3

それでは🌏

 

 

runtascience.hatenablog.com

 

【Jupyter Notebook】基礎編(基本操作コードの作成方法・Markdown・数式)

f:id:RuntaScience:20210102114105p:plain

 

こんにちは。今日はJupyterNotebookの基礎編です

 

対象

  • 初めて使用する人
  • Markdownの使い方がわからない人
  • Markdownで数式が書きたい人

※Anacondaをインストールしていない方はそちらから始めてください。

 

 Jupyter Notebookでpythonを走らせることができ、コードを逐一確認できるので利便性が高いです。

 

jupyter.org

 

基本操作

JupyterNotebookを開くところから、コードを実行し、そのファイルを閉じるところまでです。

Jupyter Notebookを開く

Anacondaを開いたら、JupyterNotebookを押しましょう。するとブラウザにて開かれます。

f:id:RuntaScience:20210102103359p:plain

 

ファイルを作成

コードを作成して走らせてみましょう。

まずはコードを作成するフォルダに移動しましょう。例えばDocument>Study>Code

f:id:RuntaScience:20210102105333p:plain

移動をしたら、右上のNew>Python3をクリックします。

f:id:RuntaScience:20210102103437p:plain

 

ファイル名変更

新しいファイルが作成されるので、ファイル名を変更しましょう。

Untitledをクリックして編集します。

f:id:RuntaScience:20210102104429p:plain

 

コードの実行

コードを実行してみましょう

実行は、[Shift]+[enter] でできます。

 

 

f:id:RuntaScience:20210102104447p:plain

 

カネルを閉じる

ファイルで作業が終わったら、×でタブを閉じるのではなく、以下の作業をしましょう。

これを押すことで、カネルが停止されます。

f:id:RuntaScience:20210102105353p:plain

 

 

 

パネル詳細

パネルの詳細を載せます。使い方は以下にメモしましたが、実際に使ってみて挙動を見るのが良いと思います。それぞれ試してみてください。

その際はいくつかコードを書いておくとよくわかると思います。(1+1とかコードはなんでもOK)

f:id:RuntaScience:20210102103459p:plain

よく使うコマンド

コマンドは作業効率を上げるのに役に立ちます。以下によく使うコマンドを載せますが、[esc]+[h]でさらに詳細を確認できます。

コマンド

できること

[Shift]+[enter]

コードの実行

[Ctrl]+[s]

セーブ

[Ctrl]+[c]

コピー

[Ctrl]+[v]

貼り付け

[Ctrl]+[z]

操作を1つ戻す

[Ctrl]+[y]

操作を1つ進める

[Esc]+[m]

モードをMarkdownに(メモ用)

[Esc]+[z]

消えてしまったコードを行ごと戻す

 

Markdown

Markdownはコードだらけのファイルの見栄えを向上させ、後々ファイルを開いたときに編集した日の状況を理解できます。

[Esc]+[m]あるいはパネルを[Markdown]にすることでMarkdownモードに変更されます。

セクション

Markdownでセクション区切りを入れるとコードが見やすくなります。

コード

# セクション  
## セクション  
### セクション  
#### セクション  
セクション

 

f:id:RuntaScience:20210102103539p:plain

 

リスト作成

 作成予定のコードなどをリストにして残しておくことができます

※改行する際は必ず後ろに半角2つ入れてください。

コード

# CodeFlow 
- Daily mean  
 - Calculation  
 - Graph  
- Monthly mean  
 - Calculation  
 - Graph  

f:id:RuntaScience:20210102103557p:plain

 作成予定のコードは番号や文字にすることも可能です。

※改行する際は必ず後ろに半角2つ入れてください。

 コード

# CodeFlow 
1. List  
 1. list  
 2. list  
1. List  
 1. list  
 2. list

f:id:RuntaScience:20210102103606p:plain

 

数式

Markdownでは数式を残しておくことができます。

書き方はLatex(ラテフ)を参照してください。

f:id:RuntaScience:20210102103746p:plain

コード

$\Delta\tau$

f:id:RuntaScience:20210102113657p:plain

コード

$\overline{x}=\frac{1}{n}\sum_{i=1}^{n} x_{i}$

 

それでは🌏

 

最終更新日

2021/1/2 

 

 

runtascience.hatenablog.com

runtascience.hatenablog.com

 

 

【NumPy】Python NumPy基礎編(配列:結合)

f:id:RuntaScience:20210101111401p:plain

 

こんにちは

今日はNumPyの基本的な使用方法について話していきたいと思います!

 

NumPyとは、Pythonでの数値計算ライブラリのこと。

tutorials.chainer.org

 

できること

など・・・

 

 Numpyの使い方になれていない方は、まずはこちらの記事をご覧ください。

runtascience.hatenablog.com

 

runtascience.hatenablog.com

 

 

 

 

 ベクトルの結合

まずはベクトルの結合です。以下のベクトルを例とします。

f:id:RuntaScience:20210101104402p:plain

v = np.arange(5)
u = np.arange(0, 6, 2)

 

 np.append()

np.append()を使えば簡単に右側から結合することができます。

f:id:RuntaScience:20210101103441p:plain

np.append(v, u)
>>>array([0, 1, 2, 3, 4, 0, 2, 4])

 

 行列の結合

2次元配列

次に行列の結合です。以下の行列を例とします。

f:id:RuntaScience:20210101104428p:plain

a1 = a
a2 = a.T
print(a1)
print(a2)
>>>[[1 2 3]
   [4 5 6]
   [7 8 9]]
>>>[[1 4 7]
   [2 5 8]
   [3 6 9]]

 

np.append()

 ベクトルと同様に行列にもnp.append()を適用することができます。

しかしながら、結合の際にn×m行列からサイズがn・mのベクトルになります。

np.append(a1,a2)
>>>array([1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 4, 7, 2, 5, 8, 3, 6, 9])

 

np.vstack()

vstack()は行列を縦方向に結合することができます。

f:id:RuntaScience:20210101103127p:plain

np.vstack((a1,a2))
>>>array([[1, 2, 3],
         [4, 5, 6],
         [7, 8, 9],
         [1, 4, 7],
         [2, 5, 8],
         [3, 6, 9]])

 

 

 np.hstack()

np.hstackは行列を横方向に結合することができます。

f:id:RuntaScience:20210101103142p:plain

np.hstack((a1,a2))
>>>
array([[1, 2, 3, 1, 4, 7],
       [4, 5, 6, 2, 5, 8],
       [7, 8, 9, 3, 6, 9]])

 

3次元配列

最後に3次元配列です。

例えば、地球惑星科学科では全球のモデルや観測データで多次元の配列を多く活用します

今回は例として、以下のように行列を作成しました。

f:id:RuntaScience:20210101115223p:plain



b1 = np.arange(3*3*3).reshape(3,3,3)
b1
>>>array([[[ 0,  1,  2],
           [ 3,  4,  5],
           [ 6,  7,  8]],

          [[ 9, 10, 11],
           [12, 13, 14],
           [15, 16, 17]],

          [[18, 19, 20],
           [21, 22, 23],
           [24, 25, 26]]])

 

np.vstack()

np.vstack()のvはverticallyを意味します。したがって、例に従うと時間軸方向に結合ができます。

f:id:RuntaScience:20210101115323p:plain

 

np.vstack((b1,b1))
>>>array([[[ 0,  1,  2],
           [ 3,  4,  5],
           [ 6,  7,  8]],

          [[ 9, 10, 11],
           [12, 13, 14],
           [15, 16, 17]],

          [[18, 19, 20],
           [21, 22, 23],
           [24, 25, 26]],

          [[ 0,  1,  2],
           [ 3,  4,  5],
           [ 6,  7,  8]],

          [[ 9, 10, 11],
           [12, 13, 14],
           [15, 16, 17]],

          [[18, 19, 20],
           [21, 22, 23],
           [24, 25, 26]]])

 

 

np.hstack()

np.vstack()のhはhorizontallyを意味します。したがって、例に従うと水平軸方向に結合ができます。

f:id:RuntaScience:20210101115310p:plain

np.hstack((b1,b1))
>>>array([[[ 0,  1,  2],
           [ 3,  4,  5],
           [ 6,  7,  8],
           [ 0,  1,  2],
           [ 3,  4,  5],
           [ 6,  7,  8]],

          [[ 9, 10, 11],
           [12, 13, 14],
           [15, 16, 17],
           [ 9, 10, 11],
           [12, 13, 14],
           [15, 16, 17]],

          [[18, 19, 20],
           [21, 22, 23],
           [24, 25, 26],
           [18, 19, 20],
           [21, 22, 23],
           [24, 25, 26]]])

それでは🌏

 

最終更新日

2021/1/1

 

 

runtascience.hatenablog.com

 

 

runtascience.hatenablog.com

 

 

【Numpy】Python NumPy基礎編(配列:作成・リストから配列(逆も))

f:id:RuntaScience:20210101111423p:plain

 

こんにちは

今日はNumPyの基本的な使用方法について話していきたいと思います!

 

NumPyとは、Pythonでの数値計算ライブラリのこと。

tutorials.chainer.org

 

配列:作成

  • 連番配列を作成
  • 行列配列を作成
  • 同じ値の配列を作成

 

 

 

配列作成

 まずは配列の作成です。配列の作成は様々な目的があると思います。

今回は、

  • ベクトル・n×m行列の作成
  • 同じ値の配列作成ーすべて0・すべて任意の値・すべてnan

を紹介します。

np.arange()

np.arange()では連番のベクトルが作成できます。

np.arange(配列のサイズ)

もしくは

np.arange(開始の数字, 終了の数字, 間隔)

で表されます。

 

np.arange(9)
>>>array([0, 1, 2, 3, 4, 5, 6, 7, 8])

 

np.arange(0, 10, 2)
>>>array([0, 2, 4, 6, 8])

 

np.arange()で行列を作成したい場合は、後ろに.reshape(n×m)をつけ足します。

 

np.arange(9).reshape(3,3)
>>>array([[0, 1, 2],
          [3, 4, 5],
          [6, 7, 8]])

 

 

np.zeros_like()とnp.zeros()

 np.zeros_like()とnp.zeros()はどちらとも0の配列を返しますが、

前者は元の配列を0に変えるもの、後者は0の配列を新しく作るものです

 

f:id:RuntaScience:20210101110553p:plain

x = np.arange(0, 10, 2)
np.zeros_like(x)
>>>[0 0 0 0 0]

 

print(np.zeros(5))
print(np.zeros((2,5)))
>>>[0. 0. 0. 0. 0.]
>>>[[0. 0. 0. 0. 0.]
    [0. 0. 0. 0. 0.]]

※行列はかっこを2つ付けることに注意してください。

 

np.full_like()

 np.full_like()では任意の数字の配列を作成することが可能です。

f:id:RuntaScience:20210101110744p:plain

任意の数字を第2引数に渡す

np.full_like(x, 5)
>>>array([5, 5, 5, 5, 5])

 nanにしたい場合は必ずdtype=np.doubleに指定

print(np.full_like(v, np.nan))
print(np.full_like(v, np.nan, dtype=np.double)) # dtypeが必要
>>>[-2147483648 -2147483648 -2147483648 -2147483648 -2147483648]
>>>[nan nan nan nan nan]

 

 

配列(array)⇄リスト(list)

 配列とリストは混同しやすいです。リストと同じように配列を作業しようとするとエラーが出たりするため、それぞれの型変更の方法を覚えておくと良いでしょう

 

f:id:RuntaScience:20210101112137p:plain

a_list = [0,1,2,3,4,5]
x = np.arange(0, 10, 2)
リスト⇒配列「np.array()」
np.array(a_list)
>>>array([0, 1, 2, 3, 4, 5])

 

配列⇒リスト「np.tolist()」
x.tolist()
>>>[0, 2, 4, 6, 8]

 

それでは🌏

 

 最終更新日

2021/01/01

runtascience.hatenablog.com

 

【NumPy】Python NumPy基礎編(演算: ベクトル・行列)

f:id:RuntaScience:20210101112250p:plain

こんにちは

今日はNumPyの基本的な使用方法について話していきたいと思います!

 

NumPyとは、Pythonでの数値計算ライブラリのこと。

tutorials.chainer.org

 

できること

など・・・

 

 

インポート

まずはモジュールをインポートします。

※numpyをインストールしていない場合はインストールしましょう⇓

【NumPy初心者必見】NumPyのインストール方法まとめました! | 侍エンジニア塾ブログ(Samurai Blog) - プログラミング入門者向けサイト

慣習的にnumpyはnpとします。

import numpy as np

 

多次元配列

 多次元配列とはベクトルと行列のことです。

np.array(ベクトルor行列)

ベクトルの表記と行列の書き方に注意してください。

ベクトル

np.array([数字列])

 

f:id:RuntaScience:20201231111105p:plain

v = np.array([1, 2, 3])
v
>>>array([1, 2, 3])

行列

行列は同じ行を[ ]でくくって、列はカンマで繋げます。

 np.array([数字列],

                [数字列],・・・)

f:id:RuntaScience:20201231111126p:plain

a = np.array([[1, 2, 3],
              [4, 5, 6]])
a
>>>array([[1, 2, 3],
          [4, 5, 6]])

 

 配列の形・次元・要素数

配列の形は、.shape

次元は、.ndim

素数は、.size

で確認できます。

print(a.shape)
print(a.ndim)
print(a.size)
>>>(2,3)
>>>2
>>>6

 

ベクトル・行列計算

ベクトルと行列計算です。今回は例で3×3行列を扱います。

 

f:id:RuntaScience:20201231111143p:plain

a =np.array([[1,2,3],
             [4,5,6], 
             [7,8,9]])

四則演算 

a+a
>>>array([[2,4,6],
          [8,10,12], 
          [14,16,18]])
 差
a-a
>>>array([[0,0,0],
          [0,0,0], 
          [0,0,0]])
 商
a/a
>>>array([[1.,1.,1.],
          [1.,1.,1.], 
          [1.,1.,1.]])
 要素積
a*a
>>>array([[1,4,9],
          [16,25,36], 
          [49,64,81]])
 行列積
np.dot(a, a)
>>>array([[30,36,42],
          [66,81,96], 
          [102,126,150]])

 転置行列

転置行列は、.Tを付けるだけで可能です。

f:id:RuntaScience:20201231111205p:plain

a.T
>>>array([[1,4,7],
          [2,5,8], 
          [3,6,9]])

 

行列の次元変更

 行列の次元を1次元にするには、.reshape(-1)とします。

b = a.reshape(-1)
b
>>>array([1, 2, 3, 4, 5, 6, 7, 8, 9])

 そして、3×3行列に戻したいときは、reshape(3, 3)とします。

※n×m=要素数とならなければいけないです。

b.reshape(3, 3)
>>>array([[1,2,3],
          [4,5,6], 
          [7,8,9]])

 

それでは🌏

 

 

最終更新日

2020/12/31

 

runtascience.hatenablog.com

 

 

【卒論・修論】引用・参考文献の管理法ーWordの利用ー

f:id:RuntaScience:20210103083522p:plain



皆さんこんにちは!

今日は卒論・修論で多くの人が使うであろうWordの機能を使った、文献管理方法をまとめてみました。

対象

「レポートや論文でwordを使った引用・参考文献の管理をする人」

※参考文献欄をきれいに書きたい人⇒ 「文献管理と追加」へ

 

 

引用・参考文献

卒論や修論では引用や参考にする論文が少なからずあると思います。引用する際に名前だけを残しておいて、最後の文献欄に載せるのを忘れてしまったら大変です。

そういったことを避けるためにも日ごろ論文を読んだら、その都度論文の情報(少なくともタイトルやURLなど)は残しておきましょう!

 

書き方

文献(Reference)の書き方はジャーナルによってさまざまなので、基本的なところだけを記します。

名前

LastName, F. M., Lastname, F. M., and LastNAME, F.

 

おそらく使用する参考文献は英語のジャーナルが多いと思うので、上のようになっています。Lastname(姓), F(Firstnameの頭文字、名前), M(ミドルネーム(あれば))

日本語ですと単純で以下のようになります。

田中一郎, 佐藤次郎.

Tanaka, I., and Sato, J.

 

引用・参考文献に必要な情報(必須*)
  • *著者
  • *タイトル
  • *年
  • *ジャーナルや発行元
  • ページ
  • 巻(Volume)
  • 号(Issue)
  • DOI(Digital Object Identifier)
  • URL
  • アクセス年月(ホームページなどを使用した際)

 etc...

 Wordで管理

文献の挿入

本文途中で作成&挿入

本文中で引用・参考文献を入れたいときは、

「参考資料」⇒「引用文献の挿入」⇒「新しい・・・」

とします(下図)

f:id:RuntaScience:20210102101239p:plain

 

文献情報入力

次に文献の情報を入力します。

まずは資料文献の種類必須項目から埋めていきます。

名前は「編集」を押すと姓・名・ミドルネームを入力できますが、白枠内にコピペorベタ打ちが速いです。

そして、必要に応じて「すべての・・フィールド表示」を選択し、論文の情報を詳細に記載します。

必ず言語は選択しましょう!正しく表示されない場合があります。

 

f:id:RuntaScience:20210102101258p:plain



 「OK」を押して確認してみましょう。正しくカッコ書きでできていると思います。

 

f:id:RuntaScience:20210102101331p:plain



参考資料のページ作成 

そして参考資料ページを新しいページに作成しておきましょう。

以下の写真のようにクリックすると、先ほど編集した論文の情報が「APA」スタイルで表示されます。

f:id:RuntaScience:20210102101413p:plain





文献のスタイル変更

参考文献の表示スタイルは、Word内で10ほど用意されています。

f:id:RuntaScience:20210102101434p:plain



 文献の管理と追加

 読んだ論文の情報をメモしましょう。

今回はNatureの最新の論文を例として使用させていただきます(REF1)。

論文を見ると必ずどこかにCITE this article的なのがあります。これを押すと引用時に必要な情報が出てくるので多用しましょう。

 

f:id:RuntaScience:20210102101448p:plain

文献管理

次に、文献管理をします。

文献を追加したいときは

「資料文献の管理」⇒「作成」

で新しい文献が追加できます。

 

そして先ほどと同じように論文の情報を入れていき、「ok」で完了です。

 

f:id:RuntaScience:20210102101506p:plain



フィールドの更新

先ほどのままだと、参考文献のページが更新されていないので、フィールドの更新を行います。

フィールドの更新は参考文献の適当な箇所を右クリックすると出てきます。

f:id:RuntaScience:20210102101518p:plain

 


その他

注意すること
  • Artical Numberがある場合はページ番号に入力
  • ネットで検索した場合はURLとアクセス年月日を掲載する
et alはどうするの?

参考文献で著者が多く、et al表示したいときは「チェックボックス執筆者」をチェックし、著者の最後に「et al」と入力します。

 f:id:RuntaScience:20210102101530p:plain




References

*1

www.nature.com

 

それでは🌏

 

最終更新日

2020/12/30

 

 

runtascience.hatenablog.com

 

 

ITパスポートの効率的な勉強法 テキストはいる?過去問はどれくらいやる?

f:id:RuntaScience:20201202153645j:plain

こんにちは。

先日、

令和2年度ITパスポート試験独学合格しました!

今回は備忘録として勉強方法を残しておきます

 

 

勉強期間は3か月です

大学の勉強があったので、1日1ー1.5時間で勉強していない日もあります...

 

先にタイトルの答えは

IT初心者はテキストがあったほうがいい

過去問は5年、少なくとも3年やろう

です!

 

使用教材・サイト

・令和02年 イメージ&クレバー方式でよくわかる 栢木先生のITパスポート教室

www.amazon.co.jp

ITパスポート試験ドットコム

www.itpassportsiken.com

 

勉強期間・量

2ヶ月あったら合格可能だと思います。

試験を受けたい日が早くに埋まってしまって、受けられないことがあるので注意してください。

1日の勉強量は平日1ー2時間、休日3時間程度取れればいいと思います。

 

勉強方法

具体的にテキストと過去問サイトを使った勉強方法です。

流れ

テキスト1週目(2ー3週間)

   ↓

テキスト2週目(1ー2週間)

   ↓

過去問&テキスト(1ヶ月)

 (過去問道場は3段までやりました)

テキスト1週目

 <進め方>

テキストを読んで(テキストの)問題を解く

☑Point

テキスト内容はすべて覚えようとしない

間違えた問題をメモしておく(付箋などで残す)

ポイントとなるところにアンダーライン

 

テキスト2週目

 <進め方>

1週目よりしっかり読む

☑Point

用語が何を意味するのか理解する

問題は間違えたところのみ

 

過去問を解く

 <進め方>

最新の過去問は残しておく

私はH27→R2で解きました。

各年春季と秋季があるので5年ほどやれば十分だと思います。

☑Point

100問通しで解く

間違えたところ&不安なところをチェック→テキストで復習

 

テストの流れ

 テスト会場には試験開始20分前までに集合と確認表に書いてあります。(試験開始ギリギリに来ている人もいました。)

 

1)まず会場で本人確認書類+確認表を見せます。試験の注意事項の紙がもらえます。

2)ハンカチ、ティシュ、目薬以外はすべてカバンにしまいます。(ポケットの中×)

3)試験の席で確認表に書いてあるIDなどをPCに入力し試験開始を待ちます。

4)試験中~

5)早めに試験が終わったら、終了ボタンを押せば採点をしてくれて終了です!

 

試験終了後1時間以内に試験結果のレポートが来ました。

 

試験を受けてみて

過去問を解いて薄々気づいていたのですが、個人的には令和に入ってからの問題が難しいと感じました。

平成の問題は8-9割は安定してとれたのですが、令和の問題で意外とわからない単語があった気がします。

勉強方法は人それぞれですが、

インプット(参考書)⇄アウトプット(過去問)は大切です。

学生はこの試験を受けるメリットがあると思います。

例えば、

・ITに関する基本的な事柄を学べる。

・テクノロジ面だけではなくマネジメント・ストラテジ面を学べる。

・試験頻度が高く勉強を効率的にアウトプットできる。

などです。

次は基本情報技術者試験に向けてコツコツ頑張ります!

 

 

それでは🌏

 

 

 

【Matplotlib 】PythonでMatplotlibカラーバーの色を利用したプロット

皆さんこんにちは。

今日はMatplotlibカラーバーを利用したプロットに関してです。

 

以前、グラデーションカラーを生成してテキストファイルに出力する方法をご紹介しましたが、おそらくこちらの記事のほうが便利です。

 

runtascience.hatenablog.com

 

 

 

解説

 モジュール

まずはモジュールをインポートします。

import numpy as np

import matplotlib.pyplot as plt

import matplotlib.cm as cm

使用データ

 次に、データを用意します。

この記事では、月ごとにグラフを変えて(12本のグラフの作成)、x軸は年、y軸のデータは適当な2次元のデータです

x = np.arange(2015, 2020, 1)

y = np.arange(0, 5*12).reshape(12, 5)

month = np.arange(1, 13, 1)

プロット

 次にプロットしていきます。

例えばcolormapのjetを使用するとき、グラフを12個分作成するので、

color=cm.jet(0-1の数字)

 とします。

したがって、

fig = plt.figure(figsize=(10, 5))

plt.rcParams["font.size"] = 12

for i in range(12):

    plt.plot(x, y[i], label=month[i], color=cm.jet(i/12))

plt.legend()

 

f:id:RuntaScience:20200918192539p:plain

 

+α

ちなみにカラーバーを逆転したい場合は

指定したいカラーの後ろに「_r」をつけてみてください

多分Reverseのrです。

 

ほかのカラーでも試してみてください!

matplotlib.org

 

それでは🌏

 

参考文献

matplotlibで色をグラデーション的に選択 - Qiita

 

 

【卒論・修論】フォントの種類を一括設定(パワーポイント; PowerPoint, ワード;Word)

f:id:RuntaScience:20200709110935p:plain

こんにちは。

今日はレポートや発表に必須なパワポとワードの一括設定に関する内容です。

 

 

レポートのフォント

フォントサイズ:10.5

フォント:日本語 MS 明朝、 英数字 Times New Roman

 

Word

 

 まずはワードのフォント一括設定です。

 

  1. 「ホーム」の「フォント」の右下をクリック
  2. デフォルト(既定)のフォントやサイズなどを選択
  3. 「既定に設定」をクリック
  4. 「この文書だけ」か「Normalテンプレート...」のどちらかを選択して完了

「Normalテンプレート...」を選択すると、今後WordをNormalで作成する時にそのフォントのスタイルとなる!

 

f:id:RuntaScience:20200708203300p:plain



 

PowerPoint

 次にパワポの一括設定です。

 

 

  1. 「表示」の「スライドマスター」を選択
  2. 「フォント」を選択
  3. 「フォントのカスタマイズ」で自分好みにフォントを選択⇒保存
  4. 最後に「マスター表示を閉じる」で完了

 

f:id:RuntaScience:20200708202230p:plain

 

 

 

レポート・卒論・修論頑張りましょう!!

 

それでは🌏

 

 

Python 違う階層のファイルを読み込む(READ)


 こんにちは。今日はファイルの読み込みに関してです。

 

 

基礎はこちらの記事から↓


runtascience.hatenablog.com

 

階層構造

今は、「geo」というディレクトリで「analysis.ipynb」内でコードを書いています

データを「data/data.nc」から取ることを想定します

f:id:RuntaScience:20200708200417p:plain

 

コード 

相対パスで指定します

まず「..」で上の階層に戻ります(geo)

次に「data/data.nc」で指定のファイルにたどり着けます。

 

import pandas as pd
df = pd.read_excel("../data/data.nc")
df

 

データの出力に関しては↓

 

runtascience.hatenablog.com

 

 

それでは🌏

【Matplotlib 】Python Matplotlibでトラジェクトリー描写

こんにちは。今日はトラジェクトリーのデータを高度分布とともにプロットする方法です。

 

データは各自でご用意ください。

必要な知識

Matplotlibの基礎 

Python-時系列プロット(気温ー日平均) - RuntaScience diary

Python 軸を日付フォーマットに変更 - RuntaScience diary

グラフ分割の基礎

Python matplotlibのGridspecーグラフの柔軟な分割(3:1でもで4:1でも) - RuntaScience diary

 

PBLH

Planetary Boundary Layer Height;大気境界層高度

大気境界層(地表面の影響を受ける層で、地上から1ー3 kmの層)と自由大気層(その影響がない)の境界

 

データ

始める前にデータをインポートしてください。

データフレーム(df)でもarrayでも大丈夫です。

必要なのは、緯度経度のデータ・時間のデータ・高度のデータです。

 

今回私は適当に作成したエクセルファイルをdfに入れて使います。

  Time latitude longitude hight pblh
0 2020-06-01 00:00:00 35.68944 139.69167 20 1000
1 2020-06-01 01:00:00 35.58944 139.59167 30 950
2 2020-06-01 02:00:00 35.68944 139.49167 20 1000
3 2020-06-01 03:00:00 35.78944 139.39167 10 950
4 2020-06-01 04:00:00 35.88944 139.29167 20 1000
... ... ... ... ... ...
259 2020-06-11 19:00:00 44.98944 121.99167 90 450
260 2020-06-11 20:00:00 44.88944 122.09167 80 400
261 2020-06-11 21:00:00 44.98944 121.99167 70 450
262 2020-06-11 22:00:00 45.08944 121.89167 60 400
263 2020-06-11 23:00:00 45.18944 121.79167 70 450

 

モジュール

まずは必要なモジュールをインポートします。

import matplotlib.pyplot as plt #描写
from matplotlib import gridspec #グラフ分割のため
#cartopy
import cartopy.crs as ccrs 
import matplotlib.ticker as mticker #緯度経度グリッド作成のため
from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER #緯度経度線を度数表示にするため
import cartopy.feature as cfeature #国境線引くため

import numpy as np #数値計算
import pandas as pd #データ読み込み用

#時間軸作成のため
from matplotlib import dates as mdates 
from matplotlib.dates import DateFormatter 
import datetime 

 

 

描写

 

#グラフ
fig = plt.figure(figsize=(12,18))
gs = gridspec.GridSpec(2, 1, height_ratios=(3, 1)) #*1
plt.rcParams["font.size"] = 18 #*2
plt.suptitle("Trajectory", y=0.9) #3

#上図
ax1=fig.add_subplot(gs[0:1, :], projection=ccrs.PlateCarree()) #1
ax1.coastlines(resolution="50m") 


 #緯度・経度線のグリッドの設定 #4
gl = ax1.gridlines(crs=ccrs.PlateCarree(), draw_labels=True,
              linewidth=2, color="gray", alpha=0.5, linestyle=":")
gl.xlabels_top = False
gl.ylabels_right = False
dlon, dlat = 10,10
xticks = np.arange(-180, 180.1, dlon)
yticks = np.arange(-90, 90.1, dlat)
gl.xlocator = mticker.FixedLocator(xticks)
gl.ylocator = mticker.FixedLocator(yticks)
gl.xformatter = LONGITUDE_FORMATTER
gl.yformatter = LATITUDE_FORMATTER
gl.xlabel_style = {"size": 20}
gl.ylabel_style = {"size": 20}


ax1.add_feature(cfeature.BORDERS, linestyle="--", linewidth=1) #国境線

lon = df["longitude"]
lat = df["latitude"]
ax1.plot(lon,lat)
#上グラフの範囲([経度min, 経度max, 緯度min, 緯度max])
ax1.set_extent([119.9, 148, 25, 50.1], crs=ccrs.PlateCarree())


#目盛りの表示形式を度数表記に
ax1.xaxis.set_major_formatter(LongitudeFormatter(zero_direction_label=True))
ax1.yaxis.set_major_formatter(LatitudeFormatter())
#===============================================================================
# 下のグラフ
ax2=fig.add_subplot(gs[-1, :]) #1


t = df["Time"]
h=df["hight"]
ax2.plot(t,h,label="trajectory")

pblh=df["pblh"]
ax2.plot(t,pblh,"--",label="PBLH",color="gray")  

#軸の設定 #*5
ax2.set_xlim(t.min(), t.max())
ax2.tick_params(axis="both", which="major",direction="in",length=7,width=2,top="on",right="on")
ax2.xaxis.set_major_formatter(DateFormatter("%b-%d"))
ax2.xaxis.set_major_locator(mdates.DayLocator(interval=1)) 

#ラベル
ax2.set_xlabel("Time")
ax2.set_ylabel("Hight(m)")
ax2.legend()

#グラフ間の隙間 #6
plt.subplots_adjust(hspace=0.04)

plt.show()


fig.savefig("XXX.png", format="png",dpi=330)

 f:id:RuntaScience:20200707111417p:plain

 

Keys

1) グラフ分割:縦を3:1の2つに分割、横は1

2) 一括でフォントサイズ設定

3) 全体のタイトル。yで縦方向の位置を設定

4)詳しくは

Cartopy-Pythonを用いた、Merra-2の利用 - RuntaScience diary

5)詳しくは

Python-時系列プロット(気温ー日平均) - RuntaScience diary

6)hspaceで上下のスペース、wspaceで左右のスペース

 

それでは 🌏

 

 

【Matplotlib】エラーバーをfill_betweenで表示

 こんにちは。

今日はエラーバーをfill_betweenを用いて表示してみたいと思います。

 

エラーバーと回帰直線の相関プロットについてです↓

runtascience.hatenablog.com

 

 

使い方

x軸はxで、y1からy2の間を塗りつぶす

ax.fill_between(x,  y1, y2)

 

例)y=0とy=x²の間を塗りつぶす

import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-10, 10, 1) y0 = x * 0 y = x ** 2 plt.fill_between(x, y0, y)

 

f:id:RuntaScience:20200706174409p:plain

モジュール

まず必要なモジュールをインポートします。

 

import numpy as np
import matplotlib.pyplot as plt

 

描写

例1

まずは、1つのデータから描写します。

データは今回は適当なものを使います。

x = np.arange(1,23,2)
y = np.array([2,3,6,5,10,10,12,14,18,20,20]) #標準偏差を想定
y_err = np.array([0.6, 0.7, 0.5, 0.8, 0.5, 0.3, 0.2, 0.3, 0.6, 0.9, 0.7]) * 3

 

def main():
fig = plt.figure(figsize=(10,5))
plt.rcParams["font.size"] = 18

ax = plt.subplot(111)

ax.plot(x, y, marker="o")
ax.fill_between(x, y+y_err, y-y_err, alpha=0.15)


#範囲の設定
ax.set_xlim(0, 24)
ax.set_ylim(0, 25)

#メモリの設定
ax.minorticks_on() #補助メモリの描写
ax.tick_params(axis="both", which="major",direction="in",length=5,width=2,top="on",right="on")
ax.tick_params(axis="both", which="minor",direction="in",length=2,width=1,top="on",right="on")

#ラベルの設定
ax.set_title("Errorbar")
ax.set_xlabel("X-axis")
ax.set_ylabel("Y-axis")

ax.grid()

plt.show()

#保存
# fig.savefig("XXX.png",format="png", dpi=300)

if __name__ == "__main__":
    main()

 

 

f:id:RuntaScience:20200706172953p:plain

 

例2

例1のfill_betweenはalphaを設定すると、重なった部分がきれいに表示されます。

x = np.arange(1,23,2)
y1 = np.array([2,3,6,5,10,10,12,14,18,20,20])
y1_err = np.array([0.6, 0.7, 0.5, 0.8, 0.5, 0.3, 0.2, 0.3, 0.6, 0.9, 0.7]) * 1.2
y2 = y1 + np.random.rand() * 4
y2_err = y1_err + np.random.rand()

 

def main():
fig = plt.figure(figsize=(10,5))
plt.rcParams["font.size"] = 18

ax = plt.subplot(111)

ax.plot(x, y1, marker="o")
ax.fill_between(x, y1+y1_err, y1-y1_err, alpha=0.15)

ax.plot(x, y2, marker="o")
ax.fill_between(x, y2+y2_err, y2-y2_err, alpha=0.15)

 

#範囲の設定
ax.set_xlim(0, 24)
ax.set_ylim(0, 25)

#メモリの設定
ax.minorticks_on() #補助メモリの描写
ax.tick_params(axis="both", which="major",direction="in",length=5,width=2,top="on",right="on")
ax.tick_params(axis="both", which="minor",direction="in",length=2,width=1,top="on",right="on")

#ラベルの設定
ax.set_title("Errorbar")
ax.set_xlabel("X-axis")
ax.set_ylabel("Y-axis")

ax.grid()

plt.show()


#保存
# fig.savefig("XXX.png",format="png", dpi=300)

if __name__ == "__main__":
    main()

 

 

 

 

f:id:RuntaScience:20200706173139p:plain

 

 

 

 

【データ解析】Pythonでデータ解析[基礎]ー繰り返し(for)・条件分岐(if elif else)

f:id:RuntaScience:20200704190125p:plain

こんにちは

今日はpythonでデータ解析の基礎です

 

 

ループ(for)

基礎

 

for i in range(2):
    print(i)
>>>0
1

 

for i in range(1, 5, 1):
    print(i)
>>>1
2
3
4

 

ループ×配列

 

x_list = []
for i in range(10):
    data = i * i
    x_list.append(data)
x_list
>>>[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

 

np.array(x_list)
>>>array([ 0, 1, 4, 9, 16, 25, 36, 49, 64, 81])

 

条件分岐

 

a = 100

if a > 100:
    print("a>100")
elif a == 100:
    print("a=100")
else:
    print("a<100")
>>>a=100

 

ループ×条件分岐

continueとbreak

continue: 通過するとforに進む

break: 通過するとforを抜け出す

for i in range(15):
    
    if i % 2 == 0:
        continue
        
    elif i == 15:
        break
        
    print(i)
>>>1
3
5
7
9
11
13

 

if・elif・else

3の倍数かつ5の倍数⇒FizzBuzz

3の倍数⇒Fizz

5の倍数⇒Buzz

for i in range(15):
    a = i + 1
    if (a % 3 == 0)&(a % 5 == 0):
        print("{}:FizzBuzz".format(a))
    elif a % 3 == 0:
        print("{}:Fizz".format(a))
    elif a % 5 == 0:
        print("{}:Buzz".format(a))
    else:
        print("{}:×".format(a))
>>>1:×
2:×
3:Fizz
4:×
5:Buzz
6:Fizz
7:×
8:×
9:Fizz
10:Buzz
11:×
12:Fizz
13:×
14:×
15:FizzBuzz

 

 

 format文はこちらから

 

runtascience.hatenablog.com

 

 

それでは🌏

【データ解析】Pythonでデータ解析[基礎]ー数と文字・計算・配列・行列

f:id:RuntaScience:20200704182559p:plain



こんにちは

今日はpythonでデータ解析の基礎です

 

数と文字

主に用いられる型(type)

f:id:RuntaScience:20200704173342p:plain

 整数(int)
a = 4
type(a)
>>>int
 浮動小数点(float)
b = 4.4
type(b)
>>>float

 

b2 = 1/3
type(b2)
>>>float
 真偽(True or False)
c = True
type(c)
>>>True

 

文字列(str)
d = "NAME"
type(d)
>>>str

 

日付(datetime)
import pandas as pd
e = pd.to_datetime("2019-01-01 12:30")
print(e)
type(e)
>>>2019-01-01 12:30:00
pandas._libs.tslibs.timestamps.Timestamp

 

リスト(list)
f = [1, 2, 3, 4]
type(f)
>>>list

 

 辞書
g = {"A1":1, "A2":2, "A3":3, "A5":4}
type(g)
>>>dict

 

タプル
h = (1, 2, 3, 4)
type(h)
>>>tuple

 

セット
i = {1, 2, 3, 4}
type(i)
>>>set

 

配列(array)
import numpy as np
j = np.arange(1,5,1)
type(j)
>>>numpy.ndarray

 

関数
def my_name(name):
    print(name)
my_name("Alex")    
type(my_name)
>>>Alex
function

 

 

計算

 基本的な計算から、行列計算までです

 

加法・減法・乗法・除法

1 + 4
>>>5

 

4 - 1
>>>3

 

11 * 12
>>>132

 

33 / 3
>>>11.0

 

11 % 2
>>>1

 

配列

 np.arange(x, y, n)

xからyまでのn間隔の配列の作成

注意するのは、y-1しか数が並ばないこと。

a = np.arange(1, 10, 1)
a
>>>array([1, 2, 3, 4, 5, 6, 7, 8, 9])

 

a2 = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
a2
>>>array([1, 2, 3, 4, 5, 6, 7, 8, 9])

 

.reshape(行, 列)で配列の次元を変更できます。

#2次元配列作成
b = np.arange(1, 51, 1).reshape(5, 10)
b
>>>array([[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
[11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
[21, 22, 23, 24, 25, 26, 27, 28, 29, 30],
[31, 32, 33, 34, 35, 36, 37, 38, 39, 40],
[41, 42, 43, 44, 45, 46, 47, 48, 49, 50]])

 

.reshape(-1,)で1次元配列に戻せます

b2 = b.reshape(-1,)
b2
>>>array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50])

 

最後に配列の情報を確認しておきましょう。

print(b.shape) #配列の形
print(b.ndim) #配列の次元
print(b.size) #配列のサイズ
>>>(5, 10)
>>>2
>>>50

 

行列計算

基礎

 

f:id:RuntaScience:20200704180841p:plain



A = np.array([[2, 2], [2, 4]])
A
>>>array([[2, 2],
[2, 4]])

 

A + 10
>>>array([[12, 12],
[12, 14]])

 

A + A
>>>array([[4, 4],
[4, 8]])

 

A * 3
>>>array([[ 6, 6],
[ 6, 12]])

 

 ※行列の掛け算ではなく、要素の掛け算である

A * A
>>>array([[ 4, 4],
[ 4, 16]])

 

行列の積(3種類の計算方法)

A @ A
np.dot(A, A)
A.dot(A)
>>>array([[ 8, 12],
[12, 20]])

 

転置行列・逆行列単位行列

 

f:id:RuntaScience:20200704180900p:plain

np.transpose(A)
>>>array([[2, 2],
[2, 4]])

 

f:id:RuntaScience:20200704180952p:plain

inv_A = np.linalg.inv(A)
inv_A
>>>array([[ 1. , -0.5],
[-0.5, 0.5]])
 
A.dot(inv_A)
# np.dot(A, inv_A)
>>>array([[1., 0.],
[0., 1.]])

 

逆行列が求まらない場合は単位行列は出ない

B = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) B
>>>array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])

#逆行列
inv_B = np.linalg.inv(B) inv_B
>>>array([[ 3.15251974e+15, -6.30503948e+15, 3.15251974e+15],
[-6.30503948e+15, 1.26100790e+16, -6.30503948e+15],
[ 3.15251974e+15, -6.30503948e+15, 3.15251974e+15]])
#元の行列×逆行列
B.dot(inv_B)
>>>array([[ 0. , 1. , -0.5],
[ 0. , 2. , -1. ],
[ 0. , 3. , 2.5]])

 ⇑単位行列が求まっていない

それは、元の行列の行列式≠0を満たしていないからである

int(np.linalg.det(B))
>>>0
 行列式

f:id:RuntaScience:20200704181041p:plain

 np.linalg.det(A)
>>>4.0

 

固有値固有ベクトル

f:id:RuntaScience:20200704181016p:plain



 

A = np.array([[2, 2], [2, 4]])
A
>>>array([[2, 2],
[2, 4]])

 

w, v = np.linalg.eig(A)
print(w) #固有値
print(v) #固有ベクトル
>>>[0.76393202 5.23606798]
[[-0.85065081 -0.52573111]
[ 0.52573111 -0.85065081]]

 

 それでは🌏

 

【Pandas】 データをファイルに格納(保存; WRITE)

f:id:RuntaScience:20200703220436p:plain

こんにちは。今日は作成したデータを保存する方法です。

 

 

データフレーム

まずはモジュールをインポートします。

import pandas as pd

 

使用するデータは、以下のデータフレームです。

print(df)

>>>

Year Month Day Data
0 2019 1 1 12
1 2019 2 1 14
2 2019 3 1 13
3 2019 4 1 12
4 2019 5 1 13
5 2019 6 1 11
6 2019 7 1 14
7 2019 8 1 12
8 2019 9 1 14
9 2019 10 1 14
10 2019 11 1 11
11 2019 12 1 15

テキストファイル

 indexまで保存されるので、読みこみの時は、indexを指定しましょう

保存時にindexを除きたい場合は、

df.to_csv("XXX.txt", index=False)

としましょう。

カンマ区切り
#データの保存
df.to_csv("XXX.txt") #確認 pd.read_csv("XXX.txt", index_col=0)

 

 

タブ区切り
#データの保存
df.to_csv("XXX.txt",sep="\t") #確認 pd.read_table("XXX.txt",index_col=0)

 

 

エクセルファイル

#データの保存
df.to_excel("XXX.xlsx",sheet_name="X") #確認
pd.read_excel("XXX.xlsx",index_col=0,sheet_name="X")

 

 

複数データを同時に

 複数のデータフレームを1つのファイルにシートを分けて保存するには、ExcelWriterを使います。

例として、データフレームをdf1, df2, df3とします

path = "XXX.xlsx"
with pd.ExcelWriter(path) as writer:
    df1.to_excel(writer, sheet_name = "sheet1")
    df2.to_excel(writer, sheet_name = "sheet2")
    df3.to_excel(writer, sheet_name = "sheet3")

 

バイナリデータ(配列;Array)

まずはモジュールをインポートします。

import numpy as np

 今回は1次元の配列データと2次元の配列データを保存します。

lon = np.arange(-180,180,0.1)
lat = np.arange(-90, 90, 0.1)
two_dim = np.arange(0,150,1).reshape(10,15)
print(lon, lat, two_dim)
>>>[-180.  -179.9 -179.8 ...  179.7  179.8  179.9]
>>>[-90. -89.9 -89.8 ... 89.7 89.8 89.9]
>>>[[ 0 1 ... 12 13 14][ 15 16 ... 27 28 29]...
...[120 121 ... 132 133 134] [135 136 ... 147 148 149]]

 

保存します。

np.save("XXX1.npy", lon)
np.save("XXX2.npy", lat)
np.save("XXX3.npy", two_dim)

 読み込んでデータがしっかり入っていることを確認しましょう

np.load("XXX1.npy")
>>>[-180. -179.9 -179.8 ... 179.7 179.8 179.9]

 

読み込みに関しては前の記事で紹介しています。

runtascience.hatenablog.com

 

 それでは🌏

 

プライバシーポリシー
お問い合わせ