回答編集履歴
3
修正
answer
CHANGED
@@ -7,6 +7,6 @@
|
|
7
7
|
`shading="flat"` の場合は、`C` はそのまま各メッシュの色に対応づけられるので、`X, Y` が (M, N) の2次元配列であれば、`C` は (M - 1, N - 1) の2次元配列を指定します。
|
8
8
|
|
9
9
|
一方、shading="gouraud" の場合、C は各メッシュの色ではなく、`X, Y` の各点の色と対応づけられるので、`X, Y` が (M, N) の2次元配列であれば、`C` も (M, N) の2次元配列を指定します。
|
10
|
-
実際のメッシュの色は、[グーローシェーディング](https://ja.wikipedia.org/wiki/%E3%82%B0%E3%83%BC%E3%83%AD%E3%83%BC%E3%82%B7%E3%82%A7%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0) によって、生成されます。
|
10
|
+
実際のメッシュの色は、[グーローシェーディング](https://ja.wikipedia.org/wiki/%E3%82%B0%E3%83%BC%E3%83%AD%E3%83%BC%E3%82%B7%E3%82%A7%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0) によって、ポリゴンの頂点の色から補間されて生成されます。
|
11
11
|
|
12
12
|
[matplotlib - pcolormesh でメッシュを描画する方法](https://pystyle.info/matplotlib-pcolormesh/#outline__7)
|
2
修正
answer
CHANGED
@@ -1,60 +1,12 @@
|
|
1
|
-
|
1
|
+
> shadingを'gouraud'にしていたのですが,'flat'とすると, 動作しました.
|
2
2
|
|
3
|
-
|
3
|
+
`shading` の指定の話でしたか。その場合、"flat" と "gouraud" で引数 `C` の解釈が異なってきます。
|
4
4
|
|
5
|
-
|
5
|
+
pcolormesh(X, Y, C) の指定ですが、
|
6
6
|
|
7
|
-
というエラーが出ているので、そうなっていないのではないでしょうか。
|
8
|
-
`
|
7
|
+
`shading="flat"` の場合は、`C` はそのまま各メッシュの色に対応づけられるので、`X, Y` が (M, N) の2次元配列であれば、`C` は (M - 1, N - 1) の2次元配列を指定します。
|
9
8
|
|
9
|
+
一方、shading="gouraud" の場合、C は各メッシュの色ではなく、`X, Y` の各点の色と対応づけられるので、`X, Y` が (M, N) の2次元配列であれば、`C` も (M, N) の2次元配列を指定します。
|
10
|
+
実際のメッシュの色は、[グーローシェーディング](https://ja.wikipedia.org/wiki/%E3%82%B0%E3%83%BC%E3%83%AD%E3%83%BC%E3%82%B7%E3%82%A7%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0) によって、生成されます。
|
10
11
|
|
11
|
-
```
|
12
|
-
X
|
13
|
-
[[-3. -3. -3. -3. -3. -3. -3.]
|
14
|
-
[-2. -2. -2. -2. -2. -2. -2.]
|
15
|
-
[-1. -1. -1. -1. -1. -1. -1.]
|
16
|
-
[ 0. 0. 0. 0. 0. 0. 0.]
|
17
|
-
[ 1. 1. 1. 1. 1. 1. 1.]
|
18
|
-
[ 2. 2. 2. 2. 2. 2. 2.]
|
19
|
-
[ 3. 3. 3. 3. 3. 3. 3.]]
|
20
|
-
Y
|
21
|
-
[[-3. -2. -1. 0. 1. 2. 3.]
|
22
|
-
[-3. -2. -1. 0. 1. 2. 3.]
|
23
|
-
[-3. -2. -1. 0. 1. 2. 3.]
|
24
|
-
[-3. -2. -1. 0. 1. 2. 3.]
|
25
|
-
[-3. -2. -1. 0. 1. 2. 3.]
|
26
|
-
[-3. -2. -1. 0. 1. 2. 3.]
|
27
|
-
[-3. -2. -1. 0. 1. 2. 3.]]
|
28
|
-
Z
|
29
|
-
[[27. 19. 13. 9. 7. 7. 9.]
|
30
|
-
[19. 12. 7. 4. 3. 4. 7.]
|
31
|
-
[13. 7. 3. 1. 1. 3. 7.]
|
32
|
-
[ 9. 4. 1. 0. 1. 4. 9.]
|
33
|
-
[ 7. 3. 1. 1. 3. 7. 13.]
|
34
|
-
[ 7. 4. 3. 4. 7. 12. 19.]
|
35
|
-
[ 9. 7. 7. 9. 13. 19. 27.]]
|
36
|
-
```
|
37
|
-
|
38
|
-
```python
|
39
|
-
import matplotlib.pyplot as plt
|
40
|
-
import numpy as np
|
41
|
-
|
42
|
-
|
43
|
-
def f(x, y):
|
44
|
-
return x ** 2 + y ** 2 + x * y
|
45
|
-
|
46
|
-
# 格子状の点を作成する。
|
47
|
-
X, Y = np.mgrid[-3:3:7j, -3:3:7j]
|
48
|
-
# 各点の Z の値を計算する。
|
49
|
-
Z = f(X, Y)
|
50
|
-
|
51
|
-
print(X)
|
52
|
-
print(Y)
|
53
|
-
print(Z)
|
54
|
-
|
55
|
-
fig, ax = plt.subplots(figsize=(7, 7))
|
56
|
-
ax.pcolormesh(X, Y, Z)
|
57
|
-
|
58
|
-
plt.show()
|
59
|
-
```
|
60
|
-
|
12
|
+
[matplotlib - pcolormesh でメッシュを描画する方法](https://pystyle.info/matplotlib-pcolormesh/#outline__7)
|
1
d
answer
CHANGED
@@ -1,7 +1,13 @@
|
|
1
|
-
pcolormesh(
|
1
|
+
pcolormesh() は、格子状の (x, y) の座標一覧と各座標に対応する値の一覧が渡されたとき、色を値に基づき変化させたヒートマップを作成する関数です。
|
2
|
-
渡す配列の形状がすなっているか確認してください。
|
3
2
|
|
3
|
+
pcolormesh(X, Y, Z) に渡す値は、x の座標一覧、y の座標一覧、(x, y) のときの値を表すすべて形状が (N, M) の2次元配列です。
|
4
4
|
|
5
|
+
> TypeError: Dimensions of C (6, 3000) are incompatible with X (3001) and/or Y (7); see help(pcolormesh)
|
6
|
+
|
7
|
+
というエラーが出ているので、そうなっていないのではないでしょうか。
|
8
|
+
`X.shape` のようにして、配列の形状を確認できるので、渡す配列の形状が上記に説明した通りになっているか確認してください。
|
9
|
+
|
10
|
+
|
5
11
|
```
|
6
12
|
X
|
7
13
|
[[-3. -3. -3. -3. -3. -3. -3.]
|