前提・実現したいこと
Test.csvのうちA列をX軸, B列をY軸,C列をZ軸,D列を凡例とした3次元の散布図を描きたいのですが,以下のエラーメッセージが出てきました.これを解決し,描画に持っていくまでの過程についてお知恵をお貸し頂けますと幸いです.宜しくお願い致します.
該当のソースコード
python
1#!/usr/bin/python 2# -*- coding: utf-8 -*- 3import matplotlib.pyplot as plt 4import pandas as pd 5import seaborn as sns 6from mpl_toolkits.mplot3d import Axes3D 7df = pd.read_csv("Test.csv") 8 9fig, ax = plt.subplots() 10ax.set_xlim(4, 12) # x軸の表示範囲 11ax.set_ylim(8, 13) # y軸の表示範囲 12ax.set_zlim(100, 110) # z軸の表示範囲 13ax.set_xlabel("A", fontsize=10) # x軸ラベル 14ax.set_ylabel("B", fontsize=10) # y軸ラベル 15ax.set_xlabel("C", fontsize=10) # x軸ラベル 16 17ax.grid() # 目盛線の表示 18ax.tick_params(labelsize=10) # 目盛線のラベルサイズ 19 20sns.scatterplot(x="A", y="B", z="C", hue="D", data=df, ax=ax) 21#ax.get_legend().remove() 22ax.legend(bbox_to_anchor=(1.0, 0.05), loc='lower left', fontsize=10, ncol=1, borderaxespad=0, frameon =False) 23 24sns.set_style("darkgrid") 25 26#グラフの枠を作っていく 27fig = plt.figure() 28ax = Axes3D(fig) 29 30ax.plot(sns.scatterplot,marker="o",linestyle='None') 31 32#最後に.show()を書いてグラフ表示 33plt.show()
エラーメッセージ
Traceback (most recent call last): File "csv_3D_test.py", line 12, in <module> ax.set_zlim(100, 110) # z軸の表示範囲 AttributeError: 'AxesSubplot' object has no attribute 'set_zlim'
使用ファイル1
Test.csv
1A,B,C,D 24.68,11.85431,106,α 34.73,12.50193,109,β 44.87,12.52497,109,γ 54.87,12.48392,109,α 64.87,12.48392,109,γ 74.87,12.48392,109,α 84.87,12.48392,109,β 94.87,12.48392,109,β 104.87,12.51094,109,θ 114.87,12.52497,109,θ
補足情報(FW/ツールのバージョンなど)
macOS10.15.4 Python3.7.3 Atom
エラーメッセージに「ax.set_zlim(8, 12) # z軸の表示範囲」とありますが、これは質問のコードにはありません。実際に実行したコードとエラーメッセージを提示いただかないと回答出来ません。
下記部分でもエラーが出ますが、このコードは何を参考に書かれたコードですか?
> sns.scatterplot(x="A", y="B", z="C", hue="D", data=df, ax=ax)
> AttributeError: 'PathCollection' object has no property 'z'
正直に申しますと,何も参考にする事なく従来の2Dのグラフを描画するコードに何も考えず追記しただけです.(Documentを見たら2Dのみに対応している事に気づきました)
回答1件
あなたの回答
tips
プレビュー