2024年4月20日土曜日

Matplotlibによる各種グラフの作成

PythonでMatplotlibを使ったグラフの作成方法を勉強中に
自分なりに工夫して試作したグラフを紹介します。
Pythonのプログラムと描けたグラフを載せておきます。


関数のグラフ


import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, np.pi*2, 73)
y1 = np.sin(x)
y2 = np.cos(x)
fig, ax = plt.subplots()

plt.plot(x, y1, label='sin')
plt.plot(x, y2, label='cos')
plt.title('Sin/Cos curves')
plt.xlabel('radian')
plt.ylabel('value')
ax.set_xticks(np.linspace(0, np.pi*2, 5))
plt.grid(color='blue', linestyle=':')
plt.legend() # 凡例を表示
plt.show()

棒グラフ


import numpy as np
import matplotlib.pyplot as plt

x = np.array([1, 2, 3, 4, 5])
y = np.array([125, 95, 280, 160, 70])
fig, ax = plt.subplots()
ax.set_ylim(0, 300)
fruits = ["Apple", "Banana", "Orange", "Grape", "Strawberry"]

plt.bar(x, y, color="#1E7F00", linewidth=0, tick_label=fruits, align="center")
plt.grid(color='blue', linestyle=':', axis='y')
plt.show()

円グラフ


import numpy as np
import matplotlib.pyplot as plt

tokhyo = [1200, 900, 600, 300, 240, 100, 150] # 得票総数(万)
party = ['Jimin', 'Ritumin', 'Isin', 'Komei', 'Kyosan', 'Kokmin', 'Sinsen']

# 得票率を計算して小数点第1位までの%で表示する円グラフ
plt.pie(tokhyo, labels=party, shadow=True, autopct='%1.1f %%')
#plt.legend() # 凡例を表示するなら1桁目のコメントアウトを外す
plt.show()

ヒストグラム


import numpy as np
import matplotlib.pyplot as plt

# 平均150、分散8、件数1000 の正規分布に従う乱数を生成
shincho = np.random.normal(150, 8, 1000) 

plt.xlabel('height (cm)')
plt.ylabel('number of students')
plt.hist(shincho, 20)
plt.grid(True)
plt.show()

2024年1月21日日曜日

Chromebookを使っています

 実は一昨年の6月からChromebookを使っています。

それまで使っていた古いAndroid 4.4 のキーボード付きタブレットの様々なアプリがサポート対象外になって、不便になってきたので、新しいタブレットを買うべく電気店へ行ってみました。そこに展示されていたのが、少しだけ旧機種になった展示品限りの安売りのChromebookでした。Androidのアプリも動く、と書かれていたので、買いました。

GoogleのアカウントをこれまでのAndroidタブレットと同じに設定すると、ほとんど手間要らずで使い始めることができました。MicrosoftのOfficeアプリ以外は、これまでに使ってきた主なアプリがほとんど使えました。買ったときのAndroidのバージョンは9だったのですが、最近比較的新しいバージョン11に更新されました。

それだけでも満足だったのですが、DebianのLinuxまで使えることも分かって、安くてお得な買物をしたと、喜びました。

メモリーが4GBで、少しパワーが足りないようで、再起動せずに使っていると、突然フリーズすることがあるので、こまめに再起動するように心がけています。

2030年まで使えるという触れ込みなので、しばらくは安心して使えそうです。


2018年11月19日月曜日

『血税』とは

 少し前に大河ドラマで明治維新の数年後の場面を見ていたら、東京の町人たちが「今度は政府に血を採られる」と騒いで嫌がっている様子が映っていました。西郷隆盛が訊くと、町人たちは「『血税』のことを恐れているのだ」と答えました。
  この時点で私は、現在で言う『血税』(血の出るような思いで納める税)のことだと思って苦笑してしまいました。しかし。
  ここで、西郷隆盛が「そうではない。『血税』というのは徴兵制のことであって、みんなで国を守っていこうということだ。身体のどこかを切って血を採られるわけではない」という趣旨の説明をすると、町人たちは安心して、すっかり打ち解けていました。
  これを見て私は、そんなはずはないだろう、と思いました。
  徴兵制というのは、普通の国民が、兵士なることを強制されることであり、武器を持って殺し合いをする訓練をさせられ、実際に殺し合いの場に連れて行かれる可能性が大きくなるということです。
  江戸時代には、このような殺し合いの場に立つのは武士の役割であり、それ以外の民にとっては武器を持って戦うことを強制されることなど無縁のことでした。
  それがいきなり兵士になることを強制されるとしたら、当時の町人は恐れおののいたはずです。結果的に血を流し、運悪く死ぬことを、すんなり受け入れられるはずはないのです。とても「なあんだ」という感じで安心するはずはないのです。

  廃藩置県によって、日本は緩い連邦制から中央集権の国民国家へと変貌します。
そして、国民には兵役や様々な義務が課されるようになります。
  やがて軍部が肥大化し、政治権力をだんだんと手にしていき、無謀な戦争を繰り返すようになり、しまいに大日本帝国は第2次世界大戦での敗戦によって事実上滅亡していまいました。

  そもそも国民国家というものがあるから、一般市民の移動の自由が制限され、国家の間の利害関係が衝突して、時には戦争が起こり、国民が兵士として殺される状況が起きるし、相手国の一般国民を原爆などの大量殺戮兵器で犠牲にして、自国に有利な状況を作ろうなどという恐ろしい考えも出てくるのです。

  国民国家と、それを維持しようとする軍隊、そんなものはなくなったらいいのです。軍隊は決して国民を守るためにあるのではなく、国家を守るためにあるのです。
  国民国家や軍隊は要らなくても,犯罪から市民を守る警察組織は必要だとは思います。ただ、それも厳しい監督の下に運用される必要があります。でないと、警察が過剰な権力を握ると息の詰まるような監視社会をもたらします。貧富の差を緩和して安全で健康で最低限の文化的な生活をすべての市民に保証するための行政組織は必要です。行政の目が行き届かない事柄から市民を守る裁判所も必要ですし、市民の意見を吸い上げ法律を作り、行政を監視する議会も必要です。
  つまり、民主的に運営される三権分立の国家的な組織が、世界にたった1つだけ必要だと思います。しかし、複数あってはいけません。
  このようなことが理想的だと私は考えています。


2017年1月29日日曜日

Grudge against President < a joke >

[The writing below is a joke.]

 When Mario Abai (the prime minister of Zipponian Empire) held talks
with Mundofuerzo Triunfo (the president of Estados Unidos de Norte Meriquenia)
on February X, 20x7,
he killed the president with a curse
"Tec Mac Maya Con, Tec Mac Maya Con".
 Why?
 Because Abai's important economic policy of TPP has been abandoned by the president.
And because the first person whom the president talks with as a president
was not Abai
but was Teresa Maria Mayo (the prime minister of Britannia).
 Abai felt a deep jealousy for her.
 And so, Abai held a grudge against the president.

2013年10月13日日曜日

Nexus 7 で無料の高機能なBASICアプリでプログラムを作ってみた

  Nexus 7 に BASIC! という無料のプログラミング・アプリをインストールしたまま、しばらくはサンプル・プログラムを動かしてみるだけでしたが、 最近初めて自分のプログラムを作ってみました。
パソコンを黎明期から使っている私には、やはり手軽に使える BASICが懐かしいです。

  このBASICはプログラムに行番号が不要でラベルを使えるので、読みやすいプログラムが書けます。
  ユーザーが独自の関数を作り、それを式の中で使ったり、値の返らない(要らない)サブルーチンとして呼び出したりできます。
  いろんな命令が盛りだくさんで、加速度センサーなど、マシン(端末)に備わっている多くの機能を扱える高機能な BASIC です。
  実行速度も速いです。
  コメントや文字列に日本語を使うこともできます。

  このBASIC に関するホームページには、いろいろな名前が出てきて、私の頭がこんがらがりそうになったのでここで整理しておきます。

  •   正式な名前は「RFO BASIC! for Android」です。
  •   Google Play でのアプリ名は「 BASIC! 」だけです。
  •   マニュアルの名前は「 De_Re_BASIC! 」です。この言葉は「 BASIC! について」というような意味です。

  アプリ作者によるサイトは http://laughton.com/basic/ です。簡単なヘルプはアプリに入っていますが、詳しいマニュアルはここからダウンロードできます。ただし、全て英語です。といっても簡単な英語ですので、プログラミングに慣れた人なら比較的すらすらと読めると思います。
  iPhone や iPad などの iOS 端末用に、よく似た名前の(大文字と小文字が違う)「 Basic! 」というBASICアプリが APP Store にありますが、これと BASIC! とは全く別のものですので、間違わないでください。

  この BASIC のサンプル・プログラムのリストを眺めたとき、例えば「 Gr.circle 」という風に命令の途中に「.」が入っていたりして、オブジェクト指向のプログラミングをしなければいけないと誤解させるような面構えだったので、敬遠していたのですが、実は全然オブジェクト指向ではありませんでした。単に命令を分類する手段に「.」を使っている感じです。

  さて、私の作ったプログラムと実行結果の画像を下に載せておきます。
いろいろな大きさと色の正方形を画面いっぱいにたくさん描くプログラムです。

  このプログラムと似たようなプログラムで円をたくさん描いて、できた画像を私の Nexus 7 のホーム画面の壁紙として使っています。世界にたった一つの、自作の壁紙です。
このようなプログラムは、乱数のさじ加減を替えると、特定の傾向の色や、大きさの幅を持たせることができ、同種の図形による様々な模様を作り出すことができます。

  このBASICを使えば、グラフィックスに限らず、ちょっとした自分だけが使うユニークで便利なプログラムを作成することができます。しかも一つ一つのプログラムにアイコンを付けてホーム画面に配置するためのウィジェットが用意されているので、自分の作ったプログラムを他のアプリと同じような感覚で使うことができます。

-----------------------------------------------
Gr.open 255,0,0,0  % 背景は透明度なしで黒
Gr.orientation 0   % Force Landscape
Gr.screen w, h
dummy = randomize(0)
maxx = w
maxy = h
maxd = 400
halfd = maxd / 2

for i=1 to 500
  a = rnd()*128+127
  r = rnd()*235+20
  g = rnd()*235+20
  b = rnd()*235+20
  fill = 1
  Gr.color a,r,g,b,fill
determine:
  x1 = rnd()*maxx
  y1 = rnd()*maxy
  x2 = x1 + rnd()*maxd - halfd
  y2 = y1 + rnd()*maxd - halfd
  s = sqr((x2 - x1)^2 + (y2 - y1)^2)
  if s < 100 then goto determine
  Gr.set.stroke s
  Gr.line nl,x1,y1,x2,y2
  Gr.render
next i

do
until 0
-----------------------------------------------

2013年6月8日土曜日

名訳と迷訳

ウェブ上では、英語から翻訳された文章を読むことが多くなりました。
翻訳なさる方々はさぞかし忙しいことだろうと思います。
しかし、できればやはり日本語の文章として違和感のないものを読みたいと思います。

今日のニュースの記事の中で、次のような文章に出会いました。

《原文》
"the level of secrecy around the current legal procedures undermines the freedoms we all cherish."

《名訳》
『現在の法的プロセスに蔓延している秘密主義は、われわれが尊重してきた自由を危険にさらすものだ。』
… TechCrunch Japan のニュース記事より

《迷訳》
『現在の法的手続きに関する秘匿性のレベルは、私たちが大切にしている自由をむしばんでいます。』
… ITmedia ニュース の記事より

《迷訳》の方の文章を最初に読んで、意味がよくつかめなかったので、
同じテーマの文章を検索していて、《名訳》の方の記事と、原文にたどり着きました。
《名訳》の方が圧倒的にわかりやすいですね。
原文の意味をくんで、ちゃんとした日本語の文章に訳されています。

《迷訳》は、単語の意味を辞書で引いたら、確かにその訳語が載っていますが、
日本語の文章としては、どこか不自然です。
どっかの会社が人的資源を省略するために多用している機械翻訳よりはましですけど…。

2013年2月21日木曜日

アンドロイドのワープロの現状

 Android 用の Office Suite に含まれるワープロアプリはどれも Microsoft Word との互換性を謳っているが、それは MS Word で作成した文書ファイルを読み込んだときの、表示に限定されているようなアプリがほとんどだ。

 タブレットだけを使って新しく文書を作成するときの互換性は極めて低く、ごく基礎的なことができるにすぎない。

 それはおそらく、それらのアプリは、まず文書ファイルのビューワーとして作成されたのであり、新規に文書を作成する機能は後に、おまけのように追加されたのが始まりだからなのだろう。

 例えば、表を挿入する機能は持っているが、挿入された表の列の幅を調整する機能は持っていない。列が2つある表を挿入したら、真ん中に区切りがある、等しい幅の列が2つ作成されて、それ以上は幅をいじれない。幅を調節したければ、いったんパソコン上の MS Word (または互換ソフト)へ読み込んで幅の調整をして書き込む必要がある。それをもう一度このタブレットへ読み込むと、パソコンで設定した列の幅の変更が反映されている。
 図や写真の挿入にしても同じ要領だ。図の周りの文字の回り込み方も、パソコンへ読み込んで調整するしか方法がない。

 つまり、書式設定の複雑な文書は、初めに書式を決めたテンプレート(雛形)をパソコンの MS Word 等で作成してから実際の文字をタブレットで入力するとか、
パソコンで作成した文書のちょっとした修正にタブレット使う、というのが、タブレット上の現状のワープロアプリの正しい使い方であると言える。

 タブレットの性能は飛躍的に向上してきているので、高性能なタブレットはパソコン並みの編集機能を持ったワープロアプリも動かせるだけの性能を持っていると思うが、アプリの作成は Andoroid というくくりで行われるので、傑出した機種があっても、それに対応したアプリは作られにくいのだろう。Android の端末全部の性能が一定水準に達する日まで、パソコン用と同等な性能を持ったアプリが現れるのは難しいだろう。

※ 第1稿よりあとで分かったのだが、Kingsoft Office は、上の文章に『できない』こととして例示されていることが『できる』ような、もっと高性能なアプリである。それで、上の文章は KIngsoft Office には当てはまらないことを、ここに断っておく。

Matplotlibによる各種グラフの作成

PythonでMatplotlibを使ったグラフの作成方法を勉強中に 自分なりに工夫して試作したグラフを紹介します。 Pythonのプログラムと描けたグラフを載せておきます。 関数のグラフ import numpy as np import matplotli...