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

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

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

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

7099閲覧

極座標の2Dカラーマッピングを作成したいです。

mizumimizu

総合スコア25

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/02/08 09:45

編集2020/02/08 10:13

前提・実現したいこと

極座標の2Dカラーマッピングを作成したいです。
r=-1~1
p=0~2pi
z=r*cos(p)

動径rと回転角pの2次元極座標系においてzの値をカラーマップで表示させたいです。

簡潔なコードを教えてください。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

Python

試したこと

下記コードを作成しましたが、うまくいきませんでした。
修正箇所をご教示ください。お願いいたします。

import numpy as np
import matplotlib.pyplot as plt

r = np.linspace(0, 1.0, 50)
p = np.linspace(0, 2*np.pi, 50)

x=rnp.cos(p)
y=r
np.sin(p)

r, p = np.meshgrid(r, p)
Z = r*np.cos(p) # 表示する計算式の指定。等高線はZに対して作られる。

plt.pcolormesh(r, p, Z, cmap='hsv') # 等高線図の生成。cmapで色付けの規則を指定する。

pp=plt.colorbar (orientation="vertical") # カラーバーの表示
pp.set_label("Label", fontname="Arial", fontsize=24) #カラーバーのラベル

plt.xlabel('X', fontsize=12)
plt.ylabel('Y', fontsize=12)
plt.xlim(-1,1)
plt.ylim(-1,1)

plt.show()

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

can110

2020/02/08 09:57

手書きでよいので、提示されたr,p,zをもとにした欲しい結果(図)を提示ください。
can110

2020/02/08 10:33

リンクは質問本文に追記ください。(質問は修正できます) 図のイメージは分かったのですが、依然として提示された具体的なr,p,zによって得られる欲しい結果(だいたいどんな色分布になるのか)が分かりませんので、できれば手書きで良いので提示ください。
guest

回答2

0

自己解決

自分でわかりました!
コード書いておきます。

import matplotlib.pyplot as plt
import numpy as np

r = np.linspace(0, 1.0, 200)
p = np.linspace(0, 2np.pi, 300)
R, P = np.meshgrid(r, p)
Z = R
np.cos(P)

X, Y = Rnp.cos(P), Rnp.sin(P)

plt.pcolormesh(X,Y,Z,cmap='hsv') #等高線図の生成。cmapで色付けの規則を指定する
plt.colorbar(orientation="vertical")#カラーバーの表示

plt.xlabel('X', fontsize=12)
plt.ylabel('Y', fontsize=12)
plt.xlim(-1,1)
plt.ylim(-1,1)

plt.xticks(np.linspace(-1, 1, 5))
plt.yticks(np.linspace(-1, 1, 5))

g=plt.subplot()
g.set_aspect('equal')

plt.show()

投稿2020/02/11 12:30

mizumimizu

総合スコア25

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

提示されたリンク先には完全に動作するコードがあるので、まずはそれをそのまま実行してみましょう。
そのうえで諸元(r,p,z)をご自身のものに修正するとよいでしょう。

ただし、こちらで実行してみたところ
df.to_csv("~testdata.csv", index=None) #csvに出力

df.to_csv("~testdata.csv", index=None, header=None) #csvに出力
と修正する必要がありました。

イメージ説明

諸元を適当に変えて描画してみた結果
イメージ説明

投稿2020/02/08 11:07

編集2020/02/08 11:08
can110

総合スコア38266

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問