#実現したいこと
3D散布図でグラフを描画していましたが、それを3Dサーフェスグラフにして描画したいです。
#問題点
エラーコードAttributeError: Unknown property c
と出力されてしまいます。また、エラー内容を辿ろうとしたものの、プログラムがどのように動作しているか理解しておらず、手を付けることが出来ませんでした。修正箇所の指摘をお願い致します。
#参照URL
プログラムは以前質問した内容から引用していますので、参照したURLを載せます。
https://teratail.com/questions/98585
#ソースコード
import matplotlib.pyplot as plt import numpy as np import pandas as pd import os import glob from mpl_toolkits.mplot3d import Axes3D from scipy import genfromtxt from datetime import datetime from pathlib import Path import sys #グローバル変数定義 files = glob.glob("./*/data/target.csv") #グラフラベル def graphlabel(): plt.xlabel("Frequency") plt.ylabel("Amplitude") ########################################## ########FFT3次元カラーマップ図関数############# ########################################## def ColormapFFT(): #グラフ描画の定義 fig = plt.figure(figsize=(30,20)) # 全てのDataFrameを読み込んだ後に結合 df_list = [] for file in files: date_str = os.path.split(os.path.split(os.path.dirname(file))[0])[1] # フォルダ名を日時データに変換 date = datetime.strptime(date_str, '%Y%m%d') tmp_df = pd.read_csv(file, encoding="UTF-8") tmp_df['date'] = date df_list.append(tmp_df) df = pd.concat(df_list, ignore_index=True) #print(df) # 3D Graphにて 日時データが入力できなので変換 xdata = df.date.astype('int64') // 10**9 xbins = xdata.sort_values().unique() xformat = [datetime.fromtimestamp(d).strftime('%m/%d') for d in xbins] #3Dグラフを表示 ax = plt.gca(projection='3d') surf = ax.plot_surface(xdata, df['freq'], df['amp'], c=df['amp'], cmap='jet') ax.xaxis.set_ticks(xbins) ax.xaxis.set_ticklabels(xformat) plt.colorbar(surf) plt.tight_layout() plt.show() ################################################## ColormapFFT() #FFT3次元カラーマップ関数呼び出し
#エラーコード
AttributeError Traceback (most recent call last) <ipython-input-1-5f90f47f22c7> in <module>() 46 plt.show() 47 ################################################## ---> 48 ColormapFFT() #FFT3次元カラーマップ関数呼び出し <ipython-input-1-5f90f47f22c7> in ColormapFFT() 39 #3Dグラフを表示 40 ax = plt.gca(projection='3d') ---> 41 surf = ax.plot_surface(xdata, df['freq'], df['amp'], c=df['amp'], cmap='jet') 42 ax.xaxis.set_ticks(xbins) 43 ax.xaxis.set_ticklabels(xformat) C:.\Local\Continuum\Anaconda2\lib\site-packages\mpl_toolkits\mplot3d\axes3d.py in plot_surface(self, X, Y, Z, *args, **kwargs) 1657 normals = [] 1658 -> 1659 polyc = art3d.Poly3DCollection(polys, *args, **kwargs) 1660 1661 if fcolors is not None: C:.\Local\Continuum\Anaconda2\lib\site-packages\mpl_toolkits\mplot3d\art3d.py in __init__(self, verts, *args, **kwargs) 517 ''' 518 zsort = kwargs.pop('zsort', True) --> 519 PolyCollection.__init__(self, verts, *args, **kwargs) 520 self.set_zsort(zsort) 521 self._codes3d = None C:.\Local\Continuum\Anaconda2\lib\site-packages\matplotlib\collections.py in __init__(self, verts, sizes, closed, **kwargs) 863 %(Collection)s 864 """ --> 865 Collection.__init__(self, **kwargs) 866 self.set_sizes(sizes) 867 self.set_verts(verts, closed) C:.\Local\Continuum\Anaconda2\lib\site-packages\matplotlib\collections.py in __init__(self, edgecolors, facecolors, linewidths, linestyles, antialiaseds, offsets, transOffset, norm, cmap, pickradius, hatch, urls, offset_position, zorder, **kwargs) 137 138 self._path_effects = None --> 139 self.update(kwargs) 140 self._paths = None 141 C:.\Local\Continuum\Anaconda2\lib\site-packages\matplotlib\artist.py in update(self, props) 854 func = getattr(self, 'set_' + k, None) 855 if func is None or not six.callable(func): --> 856 raise AttributeError('Unknown property %s' % k) 857 func(v) 858 changed = True AttributeError: Unknown property c
回答1件
あなたの回答
tips
プレビュー