質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

解決済

python 3Dサーフェスグラフのプログラムについて

bkts94441
bkts94441

総合スコア0

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

1回答

0評価

2クリップ

18閲覧

投稿2017/11/15 07:09

編集2022/01/12 10:58

#実現したいこと
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

#3D散布図画像追加
イメージ説明

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

magichan
magichan

2017/11/15 07:46

1点質問です。Y軸の周波数データは各日時データで対応が取れているのでしょうか?(全ての日時データで同じ周波数値が使用されているのでしょうか?)
bkts94441
bkts94441

2017/11/15 08:18 編集

以前教えていただいたプログラムで実行したところ、問題なくY軸の周波数データは各日付別でデータが出力されています。
wakame
wakame

2017/11/15 12:13

エラーコードAttributeError: Unknown property cと出力されてしまいます。出力されたコードはこれだけですか?もう少し吐き出されると思うのですが・・・あれば質問内容に全て記載するようにしてください。
bkts94441
bkts94441

2017/11/15 12:22

失礼致しました。明日エラーコード内容を記載致します。
bkts94441
bkts94441

2017/11/15 12:22

失礼致しました。明日エラーコード内容を記載致します。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。