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

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

ただいまの
回答率

90.34%

  • Python 3.x

    7451questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

  • Matplotlib

    380questions

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

matplotlibでAttributeError: 'int' object has no attribute 'toordinal'が解消できない

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 307

akihico

score 15

  • 実行したいこと
    datetime型と数値のlistを使って、散布図を作成しようとしています。

  • 実行環境
    Python 3.6.5 :: Anaconda custom (64-bit)

  • 起きていること
    下記のソースを実行するとエラーになってしまいます。
    解決策を教えていただけますでしょうか。

import matplotlib

print(trans_hist)
[[datetime.datetime(2018, 5, 16, 0, 3), 2204534],
 [datetime.datetime(2018, 5, 16, 0, 2), 2204534],
 [datetime.datetime(2018, 5, 15, 22, 3), 2249228],
 [datetime.datetime(2018, 5, 15, 20, 45), 2249228],
 [datetime.datetime(2018, 5, 15, 20, 3), 2347108],
 [datetime.datetime(2018, 5, 15, 20, 2), 2347108],
 [datetime.datetime(2018, 5, 15, 18, 3), 2338388],
 [datetime.datetime(2018, 5, 15, 18, 2), 2338388],
 [datetime.datetime(2018, 5, 15, 16, 3), 2372737],
 [datetime.datetime(2018, 5, 15, 16, 2), 2372737],
 [datetime.datetime(2018, 5, 15, 14, 4), 2346901],
 [datetime.datetime(2018, 5, 15, 13, 55), 2346901],
 [datetime.datetime(2018, 5, 15, 12, 3), 2435001],
 [datetime.datetime(2018, 5, 15, 12, 2), 2435001],
 [datetime.datetime(2018, 5, 15, 10, 3), 2425497],
 [datetime.datetime(2018, 5, 15, 10, 2), 2425497],
 [datetime.datetime(2018, 5, 15, 8, 3), 2441297],
 [datetime.datetime(2018, 5, 15, 8, 2), 2441297],
 [datetime.datetime(2018, 5, 15, 6, 3), 2464897],
 [datetime.datetime(2018, 5, 15, 6, 2), 2464897],
 [datetime.datetime(2018, 5, 15, 5, 0), 2478579],
 [datetime.datetime(2018, 5, 15, 4, 3), 2478687],
 [datetime.datetime(2018, 5, 15, 3, 4), 2478687],
 [datetime.datetime(2018, 5, 15, 2, 4), 2553465],
 [datetime.datetime(2018, 5, 15, 2, 2), 2553465],
 [datetime.datetime(2018, 5, 15, 0, 5), 2485630],
 [datetime.datetime(2018, 5, 15, 0, 2), 2485630],
 [datetime.datetime(2018, 5, 14, 22, 4), 2517109],
 [datetime.datetime(2018, 5, 14, 22, 2), 2517109],
 [datetime.datetime(2018, 5, 14, 20, 3), 2546648],
 [datetime.datetime(2018, 5, 14, 20, 2), 2546648],
 [datetime.datetime(2018, 5, 14, 18, 3), 2509764],
 [datetime.datetime(2018, 5, 14, 18, 2), 2509764],
 [datetime.datetime(2018, 5, 14, 16, 4), 2540629],
 [datetime.datetime(2018, 5, 14, 16, 2), 2540629],
 [datetime.datetime(2018, 5, 14, 14, 3), 2587707],
 [datetime.datetime(2018, 5, 14, 14, 2), 2587707],
 [datetime.datetime(2018, 5, 14, 12, 3), 2622980],
 [datetime.datetime(2018, 5, 14, 12, 2), 2622980],
 [datetime.datetime(2018, 5, 14, 10, 3), 2644520],
 [datetime.datetime(2018, 5, 14, 10, 2), 2644520],
 [datetime.datetime(2018, 5, 14, 8, 3), 2602869],
 [datetime.datetime(2018, 5, 14, 8, 2), 2602869],
 [datetime.datetime(2018, 5, 14, 6, 3), 2625191],
 [datetime.datetime(2018, 5, 12, 4, 2), 2625191],
 [datetime.datetime(2018, 5, 12, 2, 3), 2637987],
 [datetime.datetime(2018, 5, 12, 2, 2), 2637987],
 [datetime.datetime(2018, 5, 12, 0, 3), 2581568],
 [datetime.datetime(2018, 5, 12, 0, 2), 2581568],
 [datetime.datetime(2018, 5, 11, 22, 3), 2632897]]

matplotlib.pyplot.scatter(trans_hist[0],trans_hist[1])
matplotlib.pyplot.show()
matplotlib.pyplot.close()
  • 実行時のエラーメッセージ
AttributeErrorTraceback (most recent call last)
<ipython-input-81-0601ce12c380> in <module>()
      1 #matplotlib.pyplot.scatter(trans_hist[0],trans_hist[1])
----> 2 matplotlib.pyplot.scatter(trans_hist[0],trans_hist[1])
      3 matplotlib.pyplot.show()
      4 matplotlib.pyplot.close()

~/anaconda3/lib/python3.6/site-packages/matplotlib/pyplot.py in scatter(x, y, s, c, marker, cmap, norm, vmin, vmax, alpha, linewidths, verts, edgecolors, hold, data, **kwargs)
   3468                          vmin=vmin, vmax=vmax, alpha=alpha,
   3469                          linewidths=linewidths, verts=verts,
-> 3470                          edgecolors=edgecolors, data=data, **kwargs)
   3471     finally:
   3472         ax._hold = washold

~/anaconda3/lib/python3.6/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/python3.6/site-packages/matplotlib/axes/_axes.py in scatter(self, x, y, s, c, marker, cmap, norm, vmin, vmax, alpha, linewidths, verts, edgecolors, **kwargs)
   4232 
   4233         self._process_unit_info(xdata=x, ydata=y, kwargs=kwargs)
-> 4234         x = self.convert_xunits(x)
   4235         y = self.convert_yunits(y)
   4236 

~/anaconda3/lib/python3.6/site-packages/matplotlib/artist.py in convert_xunits(self, x)
    189         if ax is None or ax.xaxis is None:
    190             return x
--> 191         return ax.xaxis.convert_units(x)
    192 
    193     def convert_yunits(self, y):

~/anaconda3/lib/python3.6/site-packages/matplotlib/axis.py in convert_units(self, x)
   1524             return x
   1525 
-> 1526         ret = self.converter.convert(x, self.units, self)
   1527         return ret
   1528 

~/anaconda3/lib/python3.6/site-packages/matplotlib/dates.py in convert(value, unit, axis)
   1814         The *unit* and *axis* arguments are not used.
   1815         """
-> 1816         return date2num(value)
   1817 
   1818     @staticmethod

~/anaconda3/lib/python3.6/site-packages/matplotlib/dates.py in date2num(d)
    450         if not d.size:
    451             return d
--> 452         return _to_ordinalf_np_vectorized(d)
    453 
    454 

~/anaconda3/lib/python3.6/site-packages/numpy/lib/function_base.py in __call__(self, *args, **kwargs)
   2753             vargs.extend([kwargs[_n] for _n in names])
   2754 
-> 2755         return self._vectorize_call(func=func, args=vargs)
   2756 
   2757     def _get_ufunc_and_otypes(self, func, args):

~/anaconda3/lib/python3.6/site-packages/numpy/lib/function_base.py in _vectorize_call(self, func, args)
   2829                       for a in args]
   2830 
-> 2831             outputs = ufunc(*inputs)
   2832 
   2833             if ufunc.nout == 1:

~/anaconda3/lib/python3.6/site-packages/matplotlib/dates.py in _to_ordinalf(dt)
    253         tzi = UTC
    254 
--> 255     base = float(dt.toordinal())
    256 
    257     # If it's sufficiently datetime-like, it will have a `date()` method

AttributeError: 'int' object has no attribute 'toordinal'
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

これで動きました。

import matplotlib.pyplot as plt
import datetime

trans_hist = [[datetime.datetime(2018, 5, 16, 0, 3), 2204534],
 [datetime.datetime(2018, 5, 16, 0, 2), 2204534],
 [datetime.datetime(2018, 5, 15, 22, 3), 2249228],
 [datetime.datetime(2018, 5, 15, 20, 45), 2249228],
 [datetime.datetime(2018, 5, 15, 20, 3), 2347108],
 [datetime.datetime(2018, 5, 15, 20, 2), 2347108],
 [datetime.datetime(2018, 5, 15, 18, 3), 2338388],
 [datetime.datetime(2018, 5, 15, 18, 2), 2338388],
 [datetime.datetime(2018, 5, 15, 16, 3), 2372737],
 [datetime.datetime(2018, 5, 15, 16, 2), 2372737],
 [datetime.datetime(2018, 5, 15, 14, 4), 2346901],
 [datetime.datetime(2018, 5, 15, 13, 55), 2346901],
 [datetime.datetime(2018, 5, 15, 12, 3), 2435001],
 [datetime.datetime(2018, 5, 15, 12, 2), 2435001],
 [datetime.datetime(2018, 5, 15, 10, 3), 2425497],
 [datetime.datetime(2018, 5, 15, 10, 2), 2425497],
 [datetime.datetime(2018, 5, 15, 8, 3), 2441297],
 [datetime.datetime(2018, 5, 15, 8, 2), 2441297],
 [datetime.datetime(2018, 5, 15, 6, 3), 2464897],
 [datetime.datetime(2018, 5, 15, 6, 2), 2464897],
 [datetime.datetime(2018, 5, 15, 5, 0), 2478579],
 [datetime.datetime(2018, 5, 15, 4, 3), 2478687],
 [datetime.datetime(2018, 5, 15, 3, 4), 2478687],
 [datetime.datetime(2018, 5, 15, 2, 4), 2553465],
 [datetime.datetime(2018, 5, 15, 2, 2), 2553465],
 [datetime.datetime(2018, 5, 15, 0, 5), 2485630],
 [datetime.datetime(2018, 5, 15, 0, 2), 2485630],
 [datetime.datetime(2018, 5, 14, 22, 4), 2517109],
 [datetime.datetime(2018, 5, 14, 22, 2), 2517109],
 [datetime.datetime(2018, 5, 14, 20, 3), 2546648],
 [datetime.datetime(2018, 5, 14, 20, 2), 2546648],
 [datetime.datetime(2018, 5, 14, 18, 3), 2509764],
 [datetime.datetime(2018, 5, 14, 18, 2), 2509764],
 [datetime.datetime(2018, 5, 14, 16, 4), 2540629],
 [datetime.datetime(2018, 5, 14, 16, 2), 2540629],
 [datetime.datetime(2018, 5, 14, 14, 3), 2587707],
 [datetime.datetime(2018, 5, 14, 14, 2), 2587707],
 [datetime.datetime(2018, 5, 14, 12, 3), 2622980],
 [datetime.datetime(2018, 5, 14, 12, 2), 2622980],
 [datetime.datetime(2018, 5, 14, 10, 3), 2644520],
 [datetime.datetime(2018, 5, 14, 10, 2), 2644520],
 [datetime.datetime(2018, 5, 14, 8, 3), 2602869],
 [datetime.datetime(2018, 5, 14, 8, 2), 2602869],
 [datetime.datetime(2018, 5, 14, 6, 3), 2625191],
 [datetime.datetime(2018, 5, 12, 4, 2), 2625191],
 [datetime.datetime(2018, 5, 12, 2, 3), 2637987],
 [datetime.datetime(2018, 5, 12, 2, 2), 2637987],
 [datetime.datetime(2018, 5, 12, 0, 3), 2581568],
 [datetime.datetime(2018, 5, 12, 0, 2), 2581568],
 [datetime.datetime(2018, 5, 11, 22, 3), 2632897]]

plt.scatter(*zip(*trans_hist))
plt.show()
plt.close()

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/16 14:18

    ありがとうございます。解決しました。
    *zip(*trans_hist)がポイントですね。何を行っているのか調べます。

    キャンセル

  • 2018/05/16 14:45

    結果はtachikomaさんと同様です。
    zip(*trans_hist)でtrans_histをunpackしてzipに渡します。zip([datetime.datetime(2018, 5, 16, 0, 3), 2204534], [datetime.datetime(2018, 5, 16, 0, 2), 2204534], [datetime.datetime(2018, 5, 15, 22, 3), 2249228],...)という呼び出しに化けます。
    この結果をもう一回unpackしてx,yとして渡します。

    キャンセル

+1

dt = [item[0] for item in trans_hist]
values = [item[1] for item in trans_hist]


とやって、scatter(dt, values)で通らないかなぁ…

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/16 14:19

    動きました。ありがとうございます。
    そもそも、X軸とY軸のデータのとり方で勘違いしていたことがわかりました。

    キャンセル

同じタグがついた質問を見る

  • Python 3.x

    7451questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

  • Matplotlib

    380questions

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