plotly で複数のサブプロットを取ってグラフを追加する
plotlyの勉強中。メソッドがやたらあって検索すると色々なやり方がヒットして戸惑う……。
plotly で3行・3列のサブプロットを取って、1行1列目、2行2列目、3行3列目に折れ線グラフを追加したい。以下の3つはすべて同じ結果。
from plotly.subplots import make_subplots fig = make_subplots(rows=3, cols=3) #「折れ線グラフを追加する」メソッド。どのサブプロットに追加するかをrow,colで指定する。 #何も考えずに追加するならこれが一番簡単。 fig.add_scatter(y=[1,3,1], row=1, col=1) fig.add_scatter(y=[2,2,2], row=2, col=2) fig.add_scatter(y=[3,1,3], row=3, col=3) fig.show()
from plotly.subplots import make_subplots fig = make_subplots(rows=3, cols=3) #「グラフ」を追加するメソッドに、折れ線グラフを渡す。 fig.add_trace(go.Scatter(y=[1,3,1]), row=1, col=1) fig.add_trace(go.Scatter(y=[2,2,2]), row=2, col=2) fig.add_trace(go.Scatter(y=[3,1,3]), row=3, col=3) fig.show()
from plotly.subplots import make_subplots fig = make_subplots(rows=3, cols=3) #複数グラフの追加に対応したメソッド。 #追加するグラフをリストで渡し、どのサブプロットに追加するかをrows,colsで指定する。 #グラフのリスト順とrows, colsのリスト順が対応するように注意すること。 fig.add_traces([ go.Scatter(y=[1,3,1]), go.Scatter(y=[1,1,1]), go.Scatter(y=[3,1,3]) ],rows=[1,2,3], cols=[1,2,3]) fig.show()
print_grid() を使うことでサブプロットのグリッドを確認できる。
fig.print_grid()
This is the format of your plot grid:
[ (1,1) x,y ] [ (1,2) x2,y2 ] [ (1,3) x3,y3 ]
[ (2,1) x4,y4 ] [ (2,2) x5,y5 ] [ (2,3) x6,y6 ]
[ (3,1) x7,y7 ] [ (3,2) x8,y8 ] [ (3,3) x9,y9 ]
ONU内蔵ひかり電話ルーターにtransix対応ルーターを接続していた場合の自宅NASへの接続設定
やりたい事:インターネットから自宅NAS(Synology DS220j) のWebDAVにIPv6で接続したい
構成:ONU内蔵ひかり電話ルーター - trasix対応ルーター(aterm) - NAS(Synology DS220j)
正解:trasix対応ルーター(aterm)とONU内蔵ひかり電話ルーターの両方で、IPv6パケットフィルタ設定(NASアドレスwebDAVポートへの透過)を行う
先週末からどうやっても繋がらなくて困っていたが、ONU内蔵ひかり電話ルーター - trasix対応ルーター(aterm) という構成だったため、ひかり電話ルーターでも透過のIPv6パケットフィルタ設定が必要だったという話です。ずっとaterm側の IPv6パケットフィルタをいじり続けて ping から何から何も通らないと悩み続けていたのですが、ひかり電話ルーターのIPv6ファイアウォール機能で全部破棄されていたという。
プリムス 2245ランタン
自宅の玄関でオブジェと化していたプリムスの2245ランタン。20年以上前のモデル。現行品は点火装置が付いてるけどコイツには付いていない。ソロキャンプを始めようと道具集めをしていたところ、玄関に転がってる物体がランタンであることを最近になって認識したのだった(特に意識せず毎日見てると気が付かない)。
OD缶に付けっぱなしだったが中のパッキンも傷んでないし、バルブを開ければガスも出るみたいだし、じゃあ、ということでマントルを注文し使えるか試してみることに。マントルは純正ではなく大王マントルのDT-140を注文。ちょっと触っても崩れないらしい。
上の画像はマントルの空焼き直後。サイズ的には丁度いい。本当はガソリンランタン用のマントルみたいだが、マントルってガス用とガソリン用で違いはあるんだろうか。しかしなんで純正マントル注文しなかったんだ?
点火。記憶だともうちょっと明るかったような……。どうもマントルの被り方が悪いのか部分的にしか発光していない気がする。もう少し上だったかな。
SIGMA 18-200mm F3.5-6.3 DC MACRO OS HSM / Contemporary 買った
連休で暇だったので発作的にニコンFマウント用のSIGMA 18-200mm F3.5-6.3 DC MACRO OS HSM|Contemporary を購入。放ったらかしていた Nikon D5300 に装着して試し撮りをしてみた。
キットレンズの AF-S DX NIKKOR 18-55mm f/3.5-5.6G VR II の写りが優秀だったので、それと比べてしまうとだいぶ甘いけどまあいいんじゃなかろうか。問題点らしきものと言えば、最後の1枚はわざと目立たせてあるが絞り開放だと周辺減光はそれなりにあるのと、広角側の歪み方が複雑でちょっと汚いことくらいか。
ここ最近はずっとマイクロフォーサーズのGX7MK2ばかり使ってたけど、荷物に余裕がある時はD5300を持ち出すことにしよう。
(ホワイトバランスがおかしいことに今更気づいたけどこのまま)
matplotlib の 棒グラフ でx軸に日付をとりたいんだけど
matplotlib の pyplot.bar で棒グラフを描く際、x軸に日付の入った pandas の Series をそのまま渡して問題なく動いていたのだけれど、 ある日から突然動作しなくなった。多分 conda update anaconda かけたタイミングだと思うのだが、バージョンとか無頓着で全然わからん。
values使ったら動くようになったからいいけど……。なんで?
import pandas as pd import matplotlib.pyplot as plt
#エクセルを読み込む。日単位のデータをグラフにしたい。 df = pd.read_excel("test.xlsx") df
seq | accessdate | a | b | |
---|---|---|---|---|
0 | 1 | 2018-06-01 | 430 | 68 |
1 | 2 | 2018-06-02 | 285 | 80 |
2 | 3 | 2018-06-03 | 125 | 89 |
3 | 4 | 2018-06-04 | 487 | 57 |
4 | 5 | 2018-06-05 | 477 | 1 |
5 | 6 | 2018-06-06 | 159 | 4 |
6 | 7 | 2018-06-07 | 332 | 98 |
7 | 8 | 2018-06-08 | 224 | 18 |
8 | 9 | 2018-06-09 | 106 | 3 |
#各列の型はこんな感じ
df.dtypes
seq int64
accessdate datetime64[ns]
a int64
b int64
dtype: object
#x軸にseqを与える。動く。
plt.bar(df.seq,df.a)
<BarContainer object of 9 artists>
#x軸にaccessdateを与える。動かない。以前は動いていた。 #型のことで怒られていそうなのはわかるが、何か仕様がかわったのか。 plt.bar(df.accessdate,df.a)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-25-78e092c13e1a> in <module>()
----> 1 plt.bar(df.accessdate,df.a)
~\Anaconda3\lib\site-packages\matplotlib\pyplot.py in bar(*args, **kwargs)
2768 mplDeprecation)
2769 try:
-> 2770 ret = ax.bar(*args, **kwargs)
2771 finally:
2772 ax._hold = washold
~\Anaconda3\lib\site-packages\matplotlib\__init__.py in inner(ax, *args, **kwargs)
1853 "the Matplotlib list!)" % (label_namer, func.__name__),
1854 RuntimeWarning, stacklevel=2)
-> 1855 return func(ax, *args, **kwargs)
1856
1857 inner.__doc__ = _add_data_doc(inner.__doc__,
~\Anaconda3\lib\site-packages\matplotlib\axes\_axes.py in bar(self, *args, **kwargs)
2257 if align == 'center':
2258 if orientation == 'vertical':
-> 2259 left = x - width / 2
2260 bottom = y
2261 elif orientation == 'horizontal':
TypeError: ufunc subtract cannot use operands with types dtype('<M8[ns]') and dtype('float64')
#x軸にaccessdate.valuesを与える。動く。
plt.bar(df.accessdate.values,df.a)
<BarContainer object of 9 artists>
#こっちはpandasのSeriesだけど、 type(df.accessdate)
pandas.core.series.Series
#valuesだと numpy.ndarray type(df.accessdate.values)
numpy.ndarray
#lineだとそのまんまで動くんだよなー
plt.plot(df.accessdate, df.a)
[<matplotlib.lines.Line2D at 0x145329175c0>]
Windows10に無償アップグレードしたプリインストール版Windowsのハードウェア変更と再認証
表題の件。検索するとライセンス再認証に成功した・しなかったと色々な話が見つかるが、基本的にはハードウェア変更前にWindowsのアカウントをMicrosoftアカウントに切り替えてライセンスの紐付けを行い、ハードウェア変更後に引き続きMicrosoftアカウントでWindowsにサインインしてライセンス再認証を行えば良いという話であった。
今回、Windows 10 Pro に無償アップグレード済みであった、HP製HPE-190jp(Windows 7 Ultimate プリインストール)のマザーボードとCPUを交換し、ライセンス認証に成功したので備忘録として記事を残す。
さて、今回ハードウェアを交換したHPE-190jpは Intel Core i7 - 960 を選択し、CPUの世代としては 初代 Core i シリーズである Nehalem であり、「Sandy Bridgeおじさん」の一つ前にあたる。とはいえ性能自体は Core i7 2600K と 大差はなく、すでにHHDはSSDに換装していたこともあり、ネット巡回にNetflixやPrime Videoあたりの動画を観るといった使い方ではそれほど不満も覚えなかったが、TDP130Wという値からもわかる発熱の多さとその熱を冷却するためのファンの轟音にいい加減耐えられなくなった。
そして今回、新しく選んだCPUは AMD Ryzen 2700X 。注文する直前まで Core i7-8700Kで行くつもりだったが、発作的に Ryzen を選択することとなった。ベンチマークの比較記事や脆弱性の件で思うところがあったのもあるが、特にOCもやるつもりもないので、値段も大して変わらずにRyzenはリテールクーラーが付いているから楽でいいやと考えたのもある。普通、自作する人間からすればリテールクーラーなどゴミでしかないだろうが、自作から暫く離れていた自分のような人間にとっては手っ取り早く動かせるので有り難いのである。
CPU 交換に付随して当然マザーボードやメモリも交換。MBはMSI X470 GAMING PLUS を。メモリはDDR4-2666 8GB*2 とした。ケースと電源も買い替え。グラボ(GTX1060 6GB)、光学ドライブ、そしてWindows 10 proが納められたSSDはHPE-190jpから移植した。果たしてライセンス認証は上手く行くのか?
HPE-190jpのバラシを含めて、電源の投入までは3時間強を費やした。久々だったのでだいぶ戸惑った。絶対どこかミスってるよな、さあ、まずBIOS画面を拝めるかどうか、ダメだろうなと、脳内でブツブツ呟いていると無事にBIOS画面が。簡単に設定をすませてWindowsのブートへ。そして特段、躓くこともなくログイン画面が表示。すごい。Windows10 しゅごい。その昔、MB交換で散々苦労していたのは何だったのか。
さっそくライセンス認証の状態を確認すると、ライセンス認証されていない状態になっていたため、ネットで調べた手順を実行。「トラブルシューティング」⇛「このデバイス上のハードウェアを最近変更しました」を選択すると、新しいウィンドウが表示され……あれ白いままだ……何か嫌な予感が。
Windowsを再度ライセンス認証することができません
現在、弊社のサーバが利用できないためです。数分間待機するか、Microsoftアカウントをもう一度追加してみてください。
この後、数回トラブルシューティングを繰り返すも同様。再起動しても同様。3時間待っても同様。これもしかするとエラーメッセージと実際の原因が一致していない奴では?さすがにここまでハードウェアが別物になっているとプリインストール版は認証を許さないのか?くそ折角Windows褒めたに全然しゅごくない。畜生。さすがMSKK。糞が。
そして翌日。M.2 SSDとDSP版のWindowsでも購入するかと通販サイトを物色。ほぼ諦めて最後にダメ元でライセンス認証をやり直してみると……。ライセンス認証が通った。
メッセージの通りサーバ側の問題だったのだろうか。 検索してみると、一度サインインをローカルアカウント管理に切り替え、もう一度Microsoftアカウントに戻すと認証が通るとの情報もありよくわからない。うーん。やはり、この手のシステムメッセージは額面通りに受け取れないところがある。何にせよ認証が通ってよかった。
安心して色々設定を見直していると、すでに別のPCに変わり果てたWindowsのバージョン情報にはサポートとして製造元情報にHPが記載されたままになっているのを見つけた。