質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Q&A

解決済

1回答

3168閲覧

pythonの文字列について

退会済みユーザー

退会済みユーザー

総合スコア0

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

0グッド

0クリップ

投稿2017/04/16 14:44

お世話になっております。

現在、pythonの勉強をしております。
グラフを作成するpythonを書きました。

import sys
import os
import numpy as np
import matplotlib.pyplot as plt

x, y = [], []
for l in open('test.txt').readlines():
data = l[:-1].split(',')
x += [str(data[0])]
y += [int(data[1])]
plt.plot(x, y)
plt.title(“Sample”)
plt.xlabel("DATE")
plt.ylabel("ATAI")
plt.grid(True)
plt.show()

上記のpythonを書いたのですが、グラフのx軸のdate(日付)が
x軸=414.0 414.5 415.0 415.5 416.0 416.5 41.70
y軸=2.0 2.5 3.0 3.5 ...

test.txtは以下のような形式です。
0414,2
0415,4
0416,5
0417,5

と0.5刻みにグラフが作成されます。
y軸は値なのでこのままでも良いのですが
x軸の日付は0414,0416という形式で出力させたいです。
(いずれはYYYY:MMにしてみたいです。)
test.txtの最初のYYYYを文字列として配列に格納するにはどのようにしたら良いでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

時系列データとして表示したい場合は、時系列データ用の Locatorと FormatterをX軸に設定してください。

matplotlib.datas.Locator/Formatter

また、配列には文字列ではなく、Datetime型にて格納しております。

サンプル

from datetime import datetime import matplotlib.pyplot as plt import matplotlib.dates as mdates # DATA読み込み x, y = [], [] for l in open('test.txt').readlines(): data = l[:-1].split(',') x += [datetime.strptime(data[0], "%m%d")] #datetime形式 y += [int(data[1])] # 時系列用のLocator/Formatterを定義 xfmt = mdates.DateFormatter("%m/%d") xloc = mdates.DayLocator() ax = plt.subplot() ax.plot(x, y) ax.xaxis.set_major_locator(xloc) ax.xaxis.set_major_formatter(xfmt) ax.set_title("Sample") ax.set_xlabel("DATE") ax.set_ylabel("ATAI") ax.grid(True) plt.show()

イメージ説明

上のサンプルでは
・ Locatorとして DayLocator() (日間隔)を指定
・ Formatterとして DateFormatter("%m/%d") を設定
しております。

時系列データ用のLocatorやFormatterに関しては
http://matplotlib.org/api/dates_api.html
を参考にしてください。

投稿2017/04/16 23:27

編集2017/04/17 00:07
magichan

総合スコア15898

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/04/19 08:21

Datetime型で格納する必要があるのですね!ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問