回答編集履歴
3
追記
test
CHANGED
@@ -13,3 +13,65 @@
|
|
13
13
|
df = pd.read_csv(r"ファイルパス", sep='\s+', skipinitialspace=True)
|
14
14
|
|
15
15
|
```
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
**追記**
|
20
|
+
|
21
|
+
質問で挙げられている「グラデーションになっていないがグラフはできるソースコード」で
|
22
|
+
|
23
|
+
グループ毎の色分け自体はできていると思います。
|
24
|
+
|
25
|
+
ただ白っぽい色が入っているためグラフ上で見えにくくなってしまっているだけで。
|
26
|
+
|
27
|
+
白い色の入っていないカラーテーブルを使う方法はどうでしょうか。
|
28
|
+
|
29
|
+
```python
|
30
|
+
|
31
|
+
import pandas as pd
|
32
|
+
|
33
|
+
import matplotlib.pyplot as plt
|
34
|
+
|
35
|
+
from mpl_toolkits.mplot3d import Axes3D
|
36
|
+
|
37
|
+
import matplotlib.cm as cm
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
df = pd.read_csv(r"test.csv", delimiter=",", sep='\s+', skipinitialspace=True)
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
fig = plt.figure()
|
46
|
+
|
47
|
+
ax = Axes3D(fig)
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
samples = sorted(set(df['sample']))
|
52
|
+
|
53
|
+
dsize = len(samples)
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
# sample毎に描画
|
58
|
+
|
59
|
+
for idx, sample in enumerate(samples):
|
60
|
+
|
61
|
+
df2 = df[df['sample'] == sample]
|
62
|
+
|
63
|
+
X = df2["PC1"]
|
64
|
+
|
65
|
+
Y = df2["PC2"]
|
66
|
+
|
67
|
+
Z = df2["PC3"]
|
68
|
+
|
69
|
+
p=ax.scatter(X, Y, Z, c=[cm.hsv(idx/dsize)], label=sample)
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
plt.legend()
|
74
|
+
|
75
|
+
plt.show()
|
76
|
+
|
77
|
+
```
|
2
追記
test
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
質問者の環境と同じに再現できてるかはわからないですが、
|
2
2
|
|
3
|
-
Dataの部分が貼り付けてある通り半角スペース区切りのデータなら
|
3
|
+
Dataの部分が貼り付けてある通り半角スペース区切りのデータなら
|
4
4
|
|
5
|
-
区切れずに半角スペースの文字のまま一つのカラムで読み込まれてしまっています。
|
5
|
+
read_csv関数で区切れずに半角スペースの含まれた文字のまま一つのカラムで読み込まれてしまっています。
|
6
6
|
|
7
7
|
カンマ区切りのdelimiterは不要でsepのみで大丈夫です。
|
8
8
|
|
1
追記
test
CHANGED
@@ -6,6 +6,8 @@
|
|
6
6
|
|
7
7
|
カンマ区切りのdelimiterは不要でsepのみで大丈夫です。
|
8
8
|
|
9
|
+
それでエラーは発生せずにグラフの描画が行われます。
|
10
|
+
|
9
11
|
```python
|
10
12
|
|
11
13
|
df = pd.read_csv(r"ファイルパス", sep='\s+', skipinitialspace=True)
|