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

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

ただいまの
回答率

90.53%

  • Python 3.x

    9362questions

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

python グラフ描画できないのを解決したい

解決済

回答 1

投稿

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

shougi

score 9

以下のコードが動かない理由がわかりません.トレースバックについてもよくわかりません.
グラフ描画のところまではできるのですが,グラフ描画ができません.グラフ描画するためには何をしなければいけないのでしょうか.

import pandas as pd
import numpy as np

L5 = ['W-A0', 'W-B0', 'W-F0', 'W-C1', 'W-E1', 'W-A2', 'W-B2', 'W-D2', 'W-F2', 'W-C3', 'W-E3',
      'W-A4', 'W-B4', 'W-F4']
R5 = [r.replace('W', 'R') for r in L5]
# データリスト
Ds1 = pd.DataFrame(np.arange(280).reshape(10, 28), columns = L5 + R5)
Ds2 = pd.DataFrame(np.random.randn(10, 28), columns = L5 + R5)

# リスト
bL = [900, 700, 500, 300, 100]
bL1 = [1100, 1300, 1500, 1700, 1900]
hL = [900, 700, 100, 550, 250, 900, 700, 400, 100, 550, 250, 900, 700, 100]

L1=[]; L2=[]; L3=[]; L4=[]
for x in range(0,14):
    L1.append('Wf-%s' % x); L2.append('Wb-%s' % x); L3.append('Rf-%s' % x); L4.append('Rb-%s' % x)
LB = L1 + L2
RB = L3 + L4

# 計算
for i in range(0,5):
    col1 = Ds1.columns.str.contains(r'(?=.*W)(?=.*%s)' % i)
    col2 = Ds2.columns.str.contains(r'(?=.*W)(?=.*%s)' % i)
    col3 = Ds1.columns.str.contains(r'(?=.*R)(?=.*%s)' % i)
    col4 = Ds2.columns.str.contains(r'(?=.*R)(?=.*%s)' % i)
    A1 = bL[i] + Ds2.loc[:, col2].values/2 * np.cos(Ds1.loc[:, col1].values*np.pi/180)
    A2 = bL[i] - Ds2.loc[:, col2].values/2 * np.cos(Ds1.loc[:, col1].values*np.pi/180)
    A3 = bL1[i] + Ds2.loc[:, col4].values/2 * np.cos(-Ds1.loc[:, col3].values*np.pi/180)
    A4 = bL1[i] - Ds2.loc[:, col4].values/2 * np.cos(-Ds1.loc[:, col3].values*np.pi/180)

    if i == 0:
        B1 = A1.copy()
        B2 = A2.copy()
        B3 = A3.copy()
        B4 = A4.copy()
    else:
        B1 = np.c_[B1, A1] # 列の結合
        B2 = np.c_[B2, A2]
        B3 = np.c_[B3, A3]
        B4 = np.c_[B4, A4]

for y in range(0,14):
    A5 = hL[y] + Ds2.iloc[:, y].values/2 * np.sin(Ds1.iloc[:, y].values*np.pi/180)
    A6 = hL[y] - Ds2.iloc[:, y].values/2 * np.sin(Ds1.iloc[:, y].values*np.pi/180)
    A7 = hL[y] + Ds2.iloc[:, y+14].values/2 * np.sin(-Ds1.iloc[:, y+14].values*np.pi/180)
    A8 = hL[y] - Ds2.iloc[:, y+14].values/2 * np.sin(-Ds1.iloc[:, y+14].values*np.pi/180)

    if y == 0:
        B5 = A5.copy()
        B6 = A6.copy()
        B7 = A7.copy()
        B8 = A8.copy()
    else:
        B5 = np.c_[B5, A5]
        B6 = np.c_[B6, A6]
        B7 = np.c_[B7, A7]
        B8 = np.c_[B8, A8]

B_1 = np.c_[B1, B2]
B_2 = np.c_[B5, B6]
B_3 = np.c_[B3, B4]
B_4 = np.c_[B7, B8]
LcB = pd.DataFrame(B_1, columns=LB).fillna(0)
LsB = pd.DataFrame(B_2, columns=LB).fillna(0)
RcB = pd.DataFrame(B_3, columns=RB).fillna(0)
RsB = pd.DataFrame(B_4, columns=RB).fillna(0)

# LcBなどの配列のある行の抽出
P = 5
LBx = pd.DataFrame(LcB.T.loc[:, P].values.reshape((2,14)))
LBy = pd.DataFrame(LsB.T.loc[:, P].values.reshape((2,14)))
RBx = pd.DataFrame(RcB.T.loc[:, P].values.reshape((2,14)))
RBy = pd.DataFrame(RsB.T.loc[:, P].values.reshape((2,14)))
Bx = pd.concat((LBx, RBx), axis=1); Bx.columns=LB# x軸プロット用
By = pd.concat((LBy, RBy), axis=1); By.columns=RB# y軸プロット用

# グラフ
%matplotlib notebook
import matplotlib
import matplotlib.pyplot as plt

# グラフ描画
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)

# プロット
for i in range(0, 28):
    ax.plot(Bx.loc[:,i], By.loc[:,i])


トレースバック

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-4-3e697ed7e70a> in <module>()
     88 # プロット
     89 for i in range(0, 28):
---> 90     ax.plot(Bx.loc[:,i], By.loc[:,i])

C:lib\site-packages\pandas\core\indexing.py in __getitem__(self, key)
   1308 
   1309         if type(key) is tuple:
-> 1310             return self._getitem_tuple(key)
   1311         else:
   1312             return self._getitem_axis(key, axis=0)

C:lib\site-packages\pandas\core\indexing.py in _getitem_tuple(self, tup)
    794     def _getitem_tuple(self, tup):
    795         try:
--> 796             return self._getitem_lowerdim(tup)
    797         except IndexingError:
    798             pass

C:lib\site-packages\pandas\core\indexing.py in _getitem_lowerdim(self, tup)
    920         for i, key in enumerate(tup):
    921             if is_label_like(key) or isinstance(key, tuple):
--> 922                 section = self._getitem_axis(key, axis=i)
    923 
    924                 # we have yielded a scalar ?

C:lib\site-packages\pandas\core\indexing.py in _getitem_axis(self, key, axis)
   1480 
   1481         # fall thru to straight lookup
-> 1482         self._has_valid_type(key, axis)
   1483         return self._get_label(key, axis=axis)
   1484 

C:lib\site-packages\pandas\core\indexing.py in _has_valid_type(self, key, axis)
   1407 
   1408             try:
-> 1409                 key = self._convert_scalar_indexer(key, axis)
   1410                 if key not in ax:
   1411                     error()

C:lib\site-packages\pandas\core\indexing.py in _convert_scalar_indexer(self, key, axis)
    194         ax = self.obj._get_axis(min(axis, self.ndim - 1))
    195         # a scalar
--> 196         return ax._convert_scalar_indexer(key, kind=self.name)
    197 
    198     def _convert_slice_indexer(self, key, axis):

C:lib\site-packages\pandas\indexes\base.py in _convert_scalar_indexer(self, key, kind)
   1169             elif kind in ['loc'] and is_integer(key):
   1170                 if not self.holds_integer():
-> 1171                     return self._invalid_indexer('label', key)
   1172 
   1173         return key

C:lib\site-packages\pandas\indexes\base.py in _invalid_indexer(self, form, key)
   1282                         "indexers [{key}] of {kind}".format(
   1283                             form=form, klass=type(self), key=key,
-> 1284                             kind=type(key)))
   1285 
   1286     def get_duplicates(self):

TypeError: cannot do label indexing on <class 'pandas.indexes.base.Index'> with these indexers [0] of <class 'int'>

以上,よろしくお願いいたします.

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 1

check解決した方法

0

最後locとilocの入力をミスってました

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

  • Python 3.x

    9362questions

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