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

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

新規登録して質問してみよう
ただいま回答率
85.50%
ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

MATLAB

MATLABはMathWorksで開発された数値計算や数値の視覚化のための高水準の対話型プログラミング環境です。

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

1374閲覧

python 多次元配列 点と点繋いで線 Vline

11390

総合スコア20

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

MATLAB

MATLABはMathWorksで開発された数値計算や数値の視覚化のための高水準の対話型プログラミング環境です。

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2019/10/29 06:40

編集2019/10/29 06:44

イメージ説明
現在二次元配列のファイルを二種類読み込ませて上の画像を表示させています。次に下の図のように縦で繋いで誤差を
積分するようにしたいです。
イメージ説明

f1=open(r'C:/Users/Administartor/Desktop/田村/python/wakka.txt') f2=open(r'C:\Users\Administartor\Desktop\田村\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])) ## ### 描画する plt.vlines(data1, ymin=[x1_list,z1_list],ymax=[x2_list,z2_list]) plt.vlines(data2, ymin=[x1_list,z1_list],ymax=[x2_list,z2_list]) #プロットするためのデータ指定: ここではx軸にx_list,z軸にz_listを指定。折れ線グラフ #赤色で出力.線の太さを4.0pt plt.xlabel('X') # x軸のラベル plt.Zlabel('Z') # y軸のラベル #plt.legend(loc='best') # legend # その他,描画用オプション plt.xticks(fontsize=10) plt.yticks(fontsize=10) plt.grid(True) #グラフの枠を作成 plt.show() # 描画結果を出力する。必ず書く。

以上のようにプログラムを組むと、
イメージ説明
のようになりました。
どのように変更すればよいか教えてください。特にエラーは表示されません。

以下はファイルの中身です。
ーーーーーーーーーーーーーーーーーーーーーーーーーーー
data1
16.8180 -21.4740
17.0484 -21.6070
17.2787 -21.4740
17.4480 -21.4740
17.6784 -21.6070
17.9087 -21.4740
18.0780 -21.4740
18.3084 -21.6070
18.5387 -21.4740
18.7080 -21.4740
18.9384 -21.6070
19.1687 -21.4740
19.3380 -21.4740
19.5684 -21.6070
19.7987 -21.4740

ーーーーーーーーーーーーーーーーーーーーーーーーーーー
data2
16.818 -21.474
16.819 -21.475
16.820 -21.475
16.821 -21.476
16.822 -21.477
16.823 -21.477
16.824 -21.478
16.826 -21.479
16.827 -21.480
16.828 -21.480
16.829 -21.481
16.830 -21.481
16.831 -21.482
16.832 -21.483
16.833 -21.483
16.834 -21.484
16.835 -21.484
16.837 -21.485
16.838 -21.485
16.839 -21.486
16.840 -21.486
16.841 -21.487
16.842 -21.487
16.843 -21.488
16.844 -21.489
16.845 -21.489
16.846 -21.490
16.848 -21.491
16.849 -21.491
16.850 -21.492
16.851 -21.493
16.852 -21.493
16.853 -21.494
16.854 -21.494
16.855 -21.495
16.856 -21.496
16.858 -21.496
16.859 -21.497
16.860 -21.498
16.861 -21.498
……
数はdata1<data2です。

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

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

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

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

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

guest

回答1

0

ベストアンサー

2つの折れ線の間を塗りつぶすのであれば、fill_between が付けると思います。

matplotlib - fill_between, fill_betweenx, fill で塗りつぶした図形を作成する。

python

1fig, ax = plt.subplots(figsize=(5, 5)) 2 3x = np.linspace(0, 10, 1000) 4y1 = np.sin(x) 5y2 = np.cos(x) 6 7ax.plot(x, y1, "k", label="sin") 8ax.plot(x, y2, "k", label="cos") 9ax.legend() 10ax.fill_between(x, y1, y2, alpha=0.5)

イメージ説明

追記

以下のようにしてみてはどうでしょうか。

python

1fig, ax = plt.subplots(figsize=(5, 5)) 2 3x1 = np.linspace(0, 10, 1000) 4y1 = np.sin(x1) 5 6x2 = np.linspace(0, 10, 100) 7y2 = np.cos(x2) 8 9ax.plot(x1, y1, "k", label="sin") 10ax.plot(x2, y2, "k", label="cos") 11ax.legend() 12 13ax.fill(np.append(x1, x2[::-1]), np.append(y1, y2[::-1]))

コメントのコードの場合以下

python

1plt.plot( 2 x1_list, z1_list, color="Black", alpha=0.5, linewidth=4.0, label="data1" 3) 4plt.plot(x2_list, z2_list, color="Black", alpha=0.8, linewidth=4.0, label="data2") 5plt.legend() 6ax.fill(np.append(x1_list, x2_list[::-1]), np.append(z1_list, z2_list[::-1]))

投稿2019/10/29 06:54

編集2019/10/29 07:33
tiitoi

総合スコア21956

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

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

11390

2019/10/29 07:03

``` ax.plot(x, y1, "k", label="sin") ax.plot(x, y2, "k", label="cos") ``` この部分のkはどういう意味でしょうか?
tiitoi

2019/10/29 07:12

2つの折れ線を作成しています。 "k": 折れ線を黒色で引く label: 表示するラベル名
11390

2019/10/29 07:22

``` plt.vlines(data1, ymin=[x1_list,z1_list],ymax=[x2_list,z2_list]) plt.vlines(data2, ymin=[x1_list,z1_list],ymax=[x2_list,z2_list]) ``` ↓ ``` plt.plot(x1_list,z1_list,color='Black',alpha = 0.5,linewidth=4.0, label='data1') #alpha=透明度 plt.plot(x2_list,z2_list,color='Black',alpha = 0.8,linewidth=4.0,label='data2') plt.legend() plt.fill_between([x1_list,z1_list],[x2_list,z2_list], alpha=0.5) ``` tiitoiさんのプログラムを参考に以上のように書き換えましたが上手くいきません。 どこが間違っているのでしょうか?
tiitoi

2019/10/29 07:24

やりたいことは2つの折れ線を引いて間を塗りつぶすということであっていますか?
11390

2019/10/29 07:25

そうです!
tiitoi

2019/10/29 07:34

データがないので、こちらでは試せないのですが、追記したコードでうまくいかないでしょうか? fill_between の代わりに fill を使って、回答のコードのようにしてみてください。
11390

2019/10/29 07:41

上手くいきました! ちなみに囲まれた場所の色の指定はどのようにするのでしょうか?
11390

2019/10/29 07:45

出来ました! ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問