teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

修正

2020/06/24 17:59

投稿

tiitoi
tiitoi

スコア21960

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

修正

2020/06/24 17:59

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -1,60 +1,12 @@
1
- pcolormesh() は、格子状の (x, y) の座標一覧と各座標対応する値一覧渡されたき、色を値に基づき変化させたヒートマップを作成する関数です。
1
+ > shadingを'gouraud'していたです,'flat'とすると, 動作しました.
2
2
 
3
- pcolormesh(X, Y, Z) に渡す値は、x 座標一覧、y 座標一覧(x, y) のきの値を表すすべて形状が (N, M)2次元配列です。
3
+ `shading`指定話でしたか。その場合"flat""gouraud" で引数 `C` 解釈が異なってきます。
4
4
 
5
- > TypeError: Dimensions of C (6, 3000) are incompatible with X (3001) and/or Y (7); see help(pcolormesh)
5
+ pcolormesh(X, Y, C) の指定ですが、
6
6
 
7
- というエラーが出ているので、そうなっていないのではないでしょうか。
8
- `X.shape` のようにして配列形状を確認できるので、渡す配列の形状が上記に説明た通りになっているか確認してください
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
- ![ージ説明](b218242797ce26340a0acc2a95b9b198.jpeg)
12
+ [matplotlib - pcolormesh でッシュを描画する方法](https://pystyle.info/matplotlib-pcolormesh/#outline__7)

1

d

2020/06/24 17:52

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -1,7 +1,13 @@
1
- pcolormesh(X, Y, Z) に渡す値は、すべて形 (N, M) の x の座標一覧、y の座標一覧、(x, y) のときの z の座標一覧です。
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.]