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

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

ただいまの
回答率

89.52%

plot Vlines zip matplotlib

受付中

回答 1

投稿 編集

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

11390

score 16

from matplotlib import pyplot as plt
from pandas.plotting import register_matplotlib_converters
import pandas as pd

register_matplotlib_converters()
df = pd.DataFrame({"date":["2019-01-01", "2019-01-02", "2019-01-04"],
                   "start":[100, 110, 140], "end":[200, 210, 230]})
df["datetime"] = pd.to_datetime(df["date"], format='%Y-%m-%d')
print(df)

xs = list(df["datetime"])

plt.xlim(xs[0], xs[-1])
plt.scatter(xs, df["start"])
plt.scatter(xs, df["end"])
plt.vlines(xs, ymin=df["start"],ymax=df["end"])
plt.show()


イメージ説明

上記のプログラムを参考に、以下のようにプログラムを組むと次のようなエラーがでました。

import matplotlib.pyplot as plt
from pandas.plotting import register_matplotlib_converters
import pandas as pd




##  データを読み込み,x_listとy_listに値を格納する
x1_list=[] # data1格納用のx_listを定義
z1_list=[] # data1格納用のz_listを定義
x2_list=[] # data2格納用のx_listを定義
z2_list=[] # data2格納用のz_listを定義



f1=open(r'C:/Users/Administartor/Desktop/oosaka/python/wakka.txt') 
f2=open(r'C:\Users\Administartor\Desktop\oosaka \python\一部回転B.txt') # プロットしたいデータが入っているファイルをr(読み込み) t(テキスト)モードで読み込む

#data1読み込み
for line in f1:
    data1 = line[:-1].split(' ')
    x1_list.append(float(data1[0]))
    z1_list.append(float(data1[1]))
#data2読み込み
for line in f2:
    data2 = line[:-1].split(' ')
    x2_list.append(float(data2[0]))
    z2_list.append(float(data2[1]))
##

### 描画する
df = pd.DataFrame({"data1":[x1_list,z1_list], "data2":[x2_list,z2_list]})
plt.xlim(x1_list,z1_list[-1], x2_list,z2_list[-1])
plt.scatter(x1_list,z1_list,x2_list,z2_list, df["data1"])
plt.scatter(x1_list,z1_list,x2_list,z2_list, df["data2"])
plt.vlines(x1_list,z1_list,x2_list,z2_list, ymin=df["data1"],ymax=df["data2"])
#plt.plot(x1_list,z1_list,color='Black',linewidth=4.0, label='data1')
#plt.plot(x2_list,z2_list,color='BLUE',linewidth=4.0,linestyle = ":",label='data2')
 #赤色で出力.線の太さを4.0pt

plt.xlabel("X")
plt.ylabel("Z")


# その他,描画用オプション
plt.xticks(fontsize=10)
plt.yticks(fontsize=10) 
plt.grid(True) #グラフの枠を作成
plt.show()
fig = plt.figure()

# 1行2列に分割した中の1(左側)
ax1 = fig.add_subplot(1, 2, 1)
ax1.plot(x1_list,z1_list,color='Black',linewidth=4.0, label='data1')

# 1行2列に分割した中の2(右側)
ax2 = fig.add_subplot(1, 2, 2)
ax2.plot(x2_list,z2_list,color='BLUE',linewidth=4.0,linestyle = ":",label='data2')




plt.show()    # 描画結果を出力する。必ず書く。


エラーの内容

Traceback (most recent call last):

  File "<ipython-input-6-19e0c1cd85fa>", line 1, in <module>
    runfile('C:/Users/Administartor/Desktop/oosaka/python/表示成功(txt変更)ダブルデータ  改.py', wdir='C:/Users/Administartor/Desktop/oosaka/python')

  File "C:\Users\Administartor\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 705, in runfile
    execfile(filename, namespace)

  File "C:\Users\Administartor\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "C:/Users/Administartor/Desktop/oosaka /python/表示成功(txt変更)ダブルデータ  改.py", line 39, in <module>
    plt.xlim(x1_list,z1_list[0], x2_list,z2_list[1])

  File "C:\Users\Administartor\Anaconda3\lib\site-packages\matplotlib\pyplot.py", line 1542, in xlim
    ret = ax.set_xlim(*args, **kwargs)

  File "C:\Users\Administartor\Anaconda3\lib\site-packages\matplotlib\axes\_base.py", line 2962, in set_xlim
    left, right = mtransforms.nonsingular(left, right, increasing=False)

  File "C:\Users\Administartor\Anaconda3\lib\site-packages\matplotlib\transforms.py", line 2900, in nonsingular
    if (not np.isfinite(vmin)) or (not np.isfinite(vmax)):

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

ちなみにファイルは
(x、z)の二次元配列です。
教えていただけると助かります。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正、ベストアンサー選択の依頼

  • hayataka2049

    2019/10/24 03:46

    エラーは省略しないで全文掲載してください(tracebackの先頭から)

    キャンセル

  • 11390

    2019/10/24 13:30

    全文載せました

    キャンセル

  • meg_

    2019/10/24 20:19

    最初のコードで「NameError: name 'xs' is not defined」のエラーが出て試せません。

    キャンセル

  • 11390

    2019/10/25 18:00

    すいません書き直しました

    キャンセル

回答 1

0

エラーが出てる発端はこの部分でして、

  File "C:/Users/Administartor/Desktop/田村/python/表示成功(txt変更)ダブルデータ  改.py", line 39, in <module>
    plt.xlim(x1_list,z1_list[0], x2_list,z2_list[1])

該当部分のコードがそもそも質問のコードに存在しないのですが(本当に困った)、

とりあえずxlimは設定しなくてもなんとかなりますから、

plt.xlim(x1_list,z1_list[-1], x2_list,z2_list[-1])

をコメントアウトしてみましょうか。

この関数は、普通は引数を2つ渡して使うと思います。どうしてこう書いたのか私には謎です。

matplotlib.pyplot.xlim — Matplotlib 3.1.1 documentation

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2019/10/29 13:28

    '''
    Traceback (most recent call last):

    File "<ipython-input-2-19e0c1cd85fa>", line 1, in <module>
    runfile('C:/Users/Administartor/Desktop/田村/python/表示成功(txt変更)ダブルデータ 改.py', wdir='C:/Users/Administartor/Desktop/田村/python')

    File "C:\Users\Administartor\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 705, in runfile
    execfile(filename, namespace)

    File "C:\Users\Administartor\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

    File "C:/Users/Administartor/Desktop/田村/python/表示成功(txt変更)ダブルデータ 改.py", line 34, in <module>
    plt.scatter(x1_list,z1_list,x2_list,z2_list, df["data1"])

    File "C:\Users\Administartor\Anaconda3\lib\site-packages\matplotlib\pyplot.py", line 3378, in scatter
    edgecolors=edgecolors, data=data, **kwargs)

    File "C:\Users\Administartor\Anaconda3\lib\site-packages\matplotlib\__init__.py", line 1717, in inner
    return func(ax, *args, **kwargs)

    File "C:\Users\Administartor\Anaconda3\lib\site-packages\matplotlib\axes\_axes.py", line 3991, in scatter
    raise ValueError(msg.format(c.shape, x.size, y.size))

    AttributeError: 'list' object has no attribute 'shape'
    '''

    キャンセル

  • 2019/10/29 13:28

    こういったエラーが表示されました

    キャンセル

  • 2019/10/29 14:28

    引数の仕様を確認してみてください。
    https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.pyplot.scatter.html

    キャンセル

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

  • ただいまの回答率 89.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

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