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

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

ただいまの
回答率

90.52%

  • Python 3.x

    6367questions

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

3Dプロットの色編集について

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 345

Quantum_walker

score 53

以下のようなグラフを作成したのですが、x,yのグリッドとz軸の値の色が同一でよくわからないのですが、
①グリッドの色をz軸の値と別にできるのか
②背景色を透明にしたい
の2点を行いたいのですが、②に関して、このサイトで聞いていた方がおり、拝見したのですが
subplot(行、列、プロット数)を揃えるにあたって、何の行列なのかわからずあやふやにいます。
3Dプロットの色編集自体、あまり多様性がなく、ネットに転がっていいないということもあって、苦戦しています。
![イメージ説明](d4fabc8be48aac363aa2a3c985363ceb.png)

__略__
#3D plot
fig = plt.figure()
ax = Axes3D(fig)
X,Y = np.meshgrid(x_list, y_list)
ax.set_xlabel("x")
ax.set_ylabel("y")
ax.set_zlabel("probability")

ax.set_xlim(2*m,0)
ax.set_ylim(0,2*m)
ax.set_zlim(0,0.35)



ax.bar3d(X.ravel(), Y.ravel(), p_map.ravel() ,0.1, 0.1, -p_map.ravel(),color ="red")#,cmap=cm.hot)
#試してみたこと(失敗)
#ax.subplot・・・・
#ax.w_xaxis.set_pane_color(())
#ax.w_yaxis.set_pane_color(())
#ax.w_zaxis.set_pane_color(())
plt.show()


ax.bar3dの中身の色をredのみにしているので、全てのplotされる値がredになってしまうということはわかるのですが。。。
上記の2点について教えて頂けないでしょうか、宜しくお願い致します。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

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

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

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

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

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

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

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

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • magichan

    2018/05/15 12:09

    申し訳ありませんが、『x,yのグリッドとz軸の値の色が同一で』 の部分が理解できません。 グリッド線(グレー)とz軸の色(黒)が似ていることが問題なのですか? 更に質問では『グリッドの色をz軸の値と別にできるのか』とありますが、グリッドの色(グレー)とz軸の値は元々何の関連もないかと思います。

    キャンセル

回答 1

checkベストアンサー

+3

①グリッドの色をz軸の値と別にできるのか

やりたいことが理解できているか自信がありませんが、高さに応じてバー色を変えたいということであれば、以下が参考になります。
apply color map to mpl_toolkits.mplot3d.Axes3D.bar3d

②背景色を透明にしたい

以下を参考にしてset_pane_colorでできました。
Changing the background color of the axes planes of a matplotlib 3D plot

import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import matplotlib.colors as colors
import matplotlib.cm as cm

# テストデータ
X,Y = np.mgrid[-5:5:11j,-4:4:9j]
Z = X ** 2 + Y ** 2
X,Y,Z = X.ravel(),Y.ravel(),Z.ravel()

# Z値に対応した色を生成
# apply color map to mpl_toolkits.mplot3d.Axes3D.bar3d
# https://stackoverflow.com/questions/11950375/apply-color-map-to-mpl-toolkits-mplot3d-axes3d-bar3d
offset = Z + np.abs(Z.min())
fracs = offset.astype(float)/offset.max()
norm = colors.Normalize(fracs.min(), fracs.max())
clrs = cm.cool(norm(fracs)) # autumn, bone, cool, copper, flag, gray, hot, hsv, jet, ...

fig = plt.figure()
ax = Axes3D(fig)
ax.bar3d(X, Y, Z, 0.1, 0.1, -Z, color = clrs)

ax.set_xlabel("x")
ax.set_ylabel("y")
ax.set_zlabel("z")

ax.set_xlim(X.min(),X.max())
ax.set_ylim(Y.min(),Y.max())
ax.set_zlim(Z.min(),Z.max())

# 座標面の色。何色でもよいが透明に
# Changing the background color of the axes planes of a matplotlib 3D plot
# https://stackoverflow.com/questions/11448972/changing-the-background-color-of-the-axes-planes-of-a-matplotlib-3d-plot
ax.w_xaxis.set_pane_color((1.0, 1.0, 1.0, 0.0)) 
ax.w_yaxis.set_pane_color((1.0, 1.0, 1.0, 0.0)) 
ax.w_zaxis.set_pane_color((1.0, 1.0, 1.0, 0.0))
plt.savefig('ret.png', bbox_inches='tight')
plt.show()


イメージ説明

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/15 14:51 編集

    透明になっていない気がします。。

    キャンセル

  • 2018/05/15 15:32

    回答を修正しました。詳細は公式マニュアルを参照ください。

    キャンセル

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

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

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

  • Python 3.x

    6367questions

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