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

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

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

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

Python 3.x

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

3244閲覧

xlsファイルを対象としたmatplotlibによるカラーマップ表示の方法

Araki2041

総合スコア13

Matplotlib

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

Python 3.x

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2018/12/30 14:04

前提・実現したいこと

pythonのmatplotlibを利用して、空間分布の可視化を行おうとしています。
以下のxlsファイル、
|列1|列2|列3|
|x | y |value|
|81 |112|0.956325306|
|105|115|0.620349646|
|77 |123|0.993263811|
|71 |126|0.706593227|
|144|139|0.047904566|
|178|39 |0.844650108|
|86 |143|0.95998328|
|173|144|0.918311221|
|147|147|0.684566514|
|208|152|0.679854253|
|166|153|0.129928102|
|209|160|0.35165255|
|151|165|0.841688879|
|215|174|0.186048993|
|184|195|0.980654919|

からデータを読み込み、'value'に該当する列データを基に各点を色分けしようとしたところ、以下のようなエラーメッセージが発生しました。

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

Traceback (most recent call last): File "graph1.py", line 22, in <module> img=ax.scatter(x,y,s=15,c =value,cmap=cm.gist_rainbow_r, vmin=0.000000, vmax=1.000000) File "C:\Users\A\AppData\Local\Programs\Python\Python37-32\lib\site-packages\matplotlib\__init__.py", line 1810, in inner return func(ax, *args, **kwargs) File "C:\Users\A\AppData\Local\Programs\Python\Python37-32\lib\site-packages\matplotlib\axes\_axes.py", line 4253, in scatter .format(c) ValueError: 'c' argument must either be valid as mpl color(s) or as numbers to be mapped to colors. Here c = value 0 0.956325 1 0.620350 2 0.993264 3 0.706593 4 0.047905 5 0.844650 6 0.959983 7 0.918311 8 0.684567 9 0.679854 10 0.129928 11 0.351653 12 0.841689 13 0.186049 14 0.980655.

該当のソースコード

Python3

1#coding: utf-8 2import pandas as pd 3from matplotlib import pyplot 4from matplotlib import cm 5 6filepath = 'C:\Users\A\Desktop\Book.xls' 7df = pd.read_excel(filepath) 8 9x=df.loc[:,['x']] 10y=df.loc[:,['y']] 11value =df.loc[:,['value']] 12fig = pyplot.figure() 13ax = fig.add_subplot(1,1,1) 14ax.set_yscale('linear') 15 16ax.set_ylim(0,1) 17ax.set_xlim(0,1) 18 19ax.set_title('Day 1.5') 20ax.set_xlabel('X-axis(mm)') 21ax.set_ylabel('Y-axis(mm)') 22img=ax.scatter(x,y,s=15,c =value,cmap=cm.gist_rainbow_r, vmin=0.000000, vmax=1.000000) 23pyplot.colorbar(img) 24 25 26pyplot.show() 27pyplot.savefig('graph1,png')

試したこと

x,y,valueの各値を乱数に置き換えたところ、想定したグラフが表示されることを確認しています。そのため、xlsファイルからの値取得に何らかの問題があると思われますが、具体的にどういった問題なのかは現状判明しておりません。
どなたかご回答いただければ幸いです。よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

value =df.loc[:,['value']]で取得した場合DataFrame型になると予想されますが、DataFrame型は渡せないようです。

value =df.loc[:,'value']とすればSeries型になり、渡すことができます。またxyDataFrameでも行けるようですが(理不尽)、こちらも同様にした方が扱いやすいと思います。

投稿2018/12/30 15:20

hayataka2049

総合スコア30933

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

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

Araki2041

2018/12/30 15:39

ご指摘いただいた箇所を修正しましたところ、目的のグラフを無事作成することができました。 早々にご回答いただき、心より感謝申し上げます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問