0

Matplotlib を使用して RGB 値のマップをプロットすることは可能ですか?

次の形式のテキスト ファイルから読み取った 3 列のデータがあります。ここで、x と y は目的の座標であり、z は指定された座標にプロットする目的の RGB カラーの 16 進文字列です。

xyz 
1 0.5 #000000
2 0.5 #FF0000
3 0.5 #00FF00
1 1.5 #0000FF
2 1.5 #FFFF00
3 1.5 #00FFFF
1 1.5 #FF00FF
2 2.5 #C0C0C0
3 2.5 #FFFFFF

これが私の現在のコードの状態です。griddata() 関数からエラーがスローされます。

import pandas as pds
import matplotlib.pyplot as plt

# Import text file using pandas
datafile = pds.read_csv(PathToData,sep='\t')

X=datafile.x
Y=datafile.y
Z=datafile.z

# Generate mesh as 'numpy.ndarray' type for plotting
# This throws the following error:
# ValueError: could not convert string to float: #FFAA39
Z=griddata(X, Y, Z, unique(X), unique(Y))

どうもありがとう

4

1 に答える 1

1

griddata不等間隔のデータをグリッド上に補間するための関数です ( griddata doc )。あなたの場合、グリッド上に既にデータがあるように見えます。それを再形成するだけです。あなたが得ているエラーはgriddata、補間のために色の16進コードを浮動小数点数に変換しようとしているために発生します。#00FF00

data_dims = (3, 3) # or what ever your data really is
X = np.asarray(x).reshape(data_dims)
Y = np.asarray(y).reshape(data_dims)
C = np.asarray([mpl.colors.colorConverter.to_rgb(_hz) for _hz in z]).reshape(data_dims + (3,)) 
# the colors converted to (r, g, b) tuples

asarray呼び出しは、データ フレームではなく、配列があることを確認するためのものです。

配列を表示したいだけの場合は、imshowそれをプロットするために使用できます。

imshow(c, interpolation='none', 
       origin='bottom', 
       extent=[np.min(X), np.max(X), np.min(Y), np.max(Y)])

カラー コンバータ docimshowdoc.

C期待どおりの向きにするために、転置/反転/回転が必要になる場合があります。

于 2013-03-14T12:54:16.590 に答える