質問編集履歴

3

簡単な例に変えた

2020/02/20 06:43

投稿

Reikirin
Reikirin

スコア23

test CHANGED
@@ -1 +1 @@
1
- Python グラフ上に表示されない直線のラベルまで表示されてしまう
1
+ Python グラフ上に表示されない直線の凡例まで表示されてしまう
test CHANGED
@@ -1,10 +1,8 @@
1
- Pythonで描いた、複数の直線(k*x + l*y = n*v (k,l,nは整数。vは自分で設定する定数))のグラフを表示するコードとその図載せ
1
+ Pythonで描いた、複数の直線(y = x + m)のグラフを表示するコードを書きした
2
2
 
3
- この時、legend()によって、どの直線かがわかるように(k,l,n)のラベルを付けて表示するのですが、x,yともに範囲を絞っているため、グラフ上に表示されない直線が出てきます。この表示されていない直線のラベルが自動で表示されないようにする方法はあるのでしょうか。お分かりになる方、どうぞよろしくお願いします。
3
+ この時、legend()によって、どの直線かがわかるように凡例を付けて表示するのですが、x,yともに範囲を絞っているため、グラフ上に表示されない直線が出てきます。この表示されていない直線のラベルが自動で表示されないようにする方法はあるのでしょうか。おそらく、legend()の引数を変えるのでしょうが。。。お分かりになる方、どうぞよろしくお願いします。
4
4
 
5
- [補足]
6
5
 
7
- 図に関してですが、ここでは変数vを10に設定しています。図を見ていただければわかると思いますが、(1,1,-1),(1,1,-2)が明らかにグラフとして表示されていないにも関わらず、ラベルが出てしまっています。
8
6
 
9
7
  ```python
10
8
 
@@ -12,113 +10,27 @@
12
10
 
13
11
  import numpy as np
14
12
 
15
- from itertools import product
16
-
17
- import pandas as pd
18
-
19
13
 
20
14
 
21
15
  fig = plt.figure()
22
16
 
23
- ax = fig.add_axes([0.2,0.08,0.35,0.8736]) #←横:縦の比は見た目がいいように設定した
17
+ ax = fig.add_axes([0.25,0.3,0.3,0.6])
24
18
 
25
19
 
26
20
 
27
- z = input(" vの数値を入力してください(10~30 の内の整数で入力してください):")
21
+ x = np.linspace(0, 100, 1000)
28
22
 
29
- judge = str.isdecimal(z)
23
+ for m in range(1,10):
30
24
 
31
- while judge is False or judge is True and not int(z) in range(10,31):
25
+ y = x + m
32
26
 
33
- z = input(" 指定された通り(10~30 の内の整数で)入力してください!!!!!!!:")
27
+ ax.plot(x, y, label=f"y = x + {m}", linestyle='solid')
34
28
 
35
- judge = str.isdecimal(z)
29
+
36
30
 
37
- else:
31
+ plt.xlabel("x")
38
32
 
39
- v = int(z)
40
-
41
-
42
-
43
- K = range(0,4)
44
-
45
- L = range(-2,3)
46
-
47
- N = range(-4,5)
48
-
49
- for k, l, n in product(K, L, N):
50
-
51
- #x = np.linspace(20, 120, 1000)
52
-
53
- if l == 0:
54
-
55
- y = np.linspace(0, 100, 1000)
56
-
57
- for m in range(1,5):
58
-
59
- if (k,l,n) in [(1,0,m)]:
60
-
61
- x = (0 * y + n * v) / k
62
-
63
- if m == 1 or m == 2:
64
-
65
- ax.plot(x, y, label=f"{(k,l,n)}", linestyle='solid', linewidth=5)
66
-
67
- else:
68
-
69
- ax.plot(x, y, label=f"{(k,l,n)}", linestyle='dashed')
70
-
71
- else:
72
-
73
- continue #理屈があり、線の太さを変えている。
74
-
75
-
76
-
77
- else:
78
-
79
- x = np.linspace(20, 120, 1000)
80
-
81
- for j in range(-4,5):
82
-
83
- if (k,l,n) in [(0,1,j), (1,-2,j), (1,-1,j), (1,1,j), (1,2,j), (2,-1,j), (3,-1,j)]:
84
-
85
- y = (- k * x + n * v) / l
86
-
87
-
88
-
89
- if (k,l,n) in [(1,-1,-2), (1,-1,-1), (1,1,-2), (1,1,-1), (1,1,2)]:
90
-
91
- ax.plot(x, y, label=f"{(k,l,n)}", linestyle='solid', linewidth=5)
92
-
93
- elif (k,l,n) in [(1,-1,2), (1,-1,1)]:
94
-
95
- ax.plot(x, y, label=f"{(k,l,n)}", linestyle='solid', linewidth=2)
96
-
97
- elif (k,l,n) in [(0,1,-4), (0,1,-3), (0,1,-2), (0,1,-1), (0,1,0), (1,-1,-4), (1,1,-4), (1,1,-3), (1,1,-2), (1,1,-1), (1,1,0), (1,2,-4), (1,2,-3), (1,2,-2), (1,2,-1), (1,2,0), (1,2,1), (2,-1,-4), (2,-1,-3), (3,-1,-4), (3,-1,-3), (3,-1,-2), (3,-1,-1), (0,1,3), (0,1,4), (1,-2,-4), (1,-2,-3), (1,-2,-2), (2,-1,0), (2,-1,3), (2,-1,4)]:
98
-
99
- continue #理屈があって、これらの直線をプロットしないようにした。
100
-
101
- else:
102
-
103
- ax.plot(x, y, label=f"{(k,l,n)}", linestyle='dashed')
104
-
105
-
106
-
107
- ax.set_xlim(20, 100)
108
-
109
- ax.set_ylim(0, 100)
110
-
111
- #ax.grid(True)
112
-
113
- else:
114
-
115
- continue
116
-
117
-
118
-
119
- plt.xlabel("ν1", fontsize=20)
120
-
121
- plt.ylabel("ν2", fontsize=20)
33
+ plt.ylabel("y")
122
34
 
123
35
 
124
36
 
@@ -126,24 +38,20 @@
126
38
 
127
39
 
128
40
 
129
- locs = np.linspace(0, 100, 6)
130
-
131
- ytick = np.array(['0','20','40','60','80','100'])
41
+ ax.legend(bbox_to_anchor=(1.1, 1), loc='upper left')
132
42
 
133
43
 
134
44
 
45
+ ax.set_xlim(0, 5)
46
+
135
- plt.yticks(locs, ytick, fontsize=14)
47
+ ax.set_ylim(0, 5)
136
48
 
137
49
 
138
50
 
139
- ax.legend(bbox_to_anchor=(1.2, 1), loc='upper left', fontsize=14, borderaxespad=0, ncol=2, title='(k,l,n)', title_fontsize=16)
140
-
141
- ax.set_title(f"v = {v}", fontsize=20)
51
+ ax.set_title(f"y = x + m", fontsize=20)
142
52
 
143
53
 
144
54
 
145
55
  plt.show()
146
56
 
147
57
  ```
148
-
149
- ![イメージ説明](36a83940170f4baf7881ddd1d3e0eaf8.jpeg)

2

誤字

2020/02/20 06:43

投稿

Reikirin
Reikirin

スコア23

test CHANGED
File without changes
test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  [補足]
6
6
 
7
- 図に関してですが、ここでは変数vを10に設定しています。図を見ていただければわかると思いますが、(1,1,-1),(1,1,-2)などが明らかにグラフとして表示されていないにも関わらず、ラベルが出てしまっています。
7
+ 図に関してですが、ここでは変数vを10に設定しています。図を見ていただければわかると思いますが、(1,1,-1),(1,1,-2)が明らかにグラフとして表示されていないにも関わらず、ラベルが出てしまっています。
8
8
 
9
9
  ```python
10
10
 

1

文章の修正

2020/02/18 07:52

投稿

Reikirin
Reikirin

スコア23

test CHANGED
File without changes
test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  [補足]
6
6
 
7
- 図に関してですが、ここでは変数vを10に設定しています。図を見ていただければわかると思いますが、(1,1,-1),(1,1,-2)などが明らかにグラフにはありせん
7
+ 図に関してですが、ここでは変数vを10に設定しています。図を見ていただければわかると思いますが、(1,1,-1),(1,1,-2)などが明らかにグラフとして表示されていないも関わらず、ラベルが出てしっています
8
8
 
9
9
  ```python
10
10