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

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

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

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

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

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

解決済

あやめデータの散布図をmatplotで描画したい

soft_cream
soft_cream

総合スコア11

Matplotlib

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

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

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

2回答

0評価

0クリップ

419閲覧

投稿2021/11/14 05:37

編集2021/11/14 07:16

がくの長さ(SL)、がくの幅(SW)、花弁の長さ(PL)、花弁の幅(PW)のうちの二つを選択して縦軸・横軸とし
あやめの種類ごとに色分けした散布図を描画したいです。
コード欄のプログラムを実行すると、以下のようなエラーが表示され
点が描画されていない、軸のみの散布図が出力されました。
ーーーーーーーーーーーーーーーーーーーーーーー
C:OOOOOOOOOOOOO>python samp.py SL PL (実行コマンド)
C:OOOOOOOOOOOOO\matplotlib\collections.py:1120: UserWarning: Collection without array used. Make sure to specify the values to be colormapped via the c argument.
warnings.warn("Collection without array used. Make sure to "
ーーーーーーーーーーーーーーーーーーーーーーー
c引数でカラーマップされる値を指定する、とはどういうことなのでしょうか。
エラーがなぜ出力されるのか
またどのように改善すればよいのか教えていただきたいです。

Python

import csv import sys class Iris: def __init__(self, data_list): if not isinstance(data_list, list): print("データがリスト形式ではありません") return self.sepal_length = float(data_list[0]) self.sepal_width = float(data_list[1]) self.petal_length = float(data_list[2]) self.petal_width = float(data_list[3]) self.species = data_list[4] def printData(self): print("がく長={0:5.2f}, がく幅={1:5.2f}, 花弁長={2:5.2f}, 花弁幅={3:5.2f}, "\ "種類={4:5s}".format(self.sepal_length,self.sepal_width, self.petal_length,\ self.petal_width,self.species)) import matplotlib.pyplot as plt import matplotlib.font_manager as fm import matplotlib.colors as mc import numpy as np def getFontProperty(size_str): font_prop = fm.FontProperties() font_prop.set_style('normal') font_prop.set_weight('light') font_prop.set_size(size_str) return font_prop.copy() def getTarget(data): length = len(data) target_list = [] for i in range(length): if (data[i].species == 'Setosa'): target_list.append(0) elif (data[i].species == 'Versicolor'): target_list.append(1) elif (data[i].species == 'Virginica'): target_list.append(2) return np.array(target_list) def extract(str, data):# data : list of Iris length = len(data) ext_list = [] label = None if (str == 'SL'): label = 'Sepal Length' for i in range(length): ext_list.append(data[i].sepal_length) elif (str == 'SW'): label = 'Sepal Width' for i in range(length): ext_list.append(data[i].sepal_width) elif (str == 'PL'): label = 'Petal Length' for i in range(length): ext_list.append(data[i].petal_length) elif (str == 'PW'): label = 'Petal Width' for i in range(length): ext_list.append(data[i].petal_width) return np.array(ext_list), label def runScatterPlot(str1, str2, data): x, label1 = extract(str1, data) y, label2 = extract(str2, data) labels = getTarget(data) colors = ['red','green','blue'] species = ['Setosa','Virginica','Versicolor'] fp2 = getFontProperty('20') fp3 = getFontProperty('15') fig = plt.figure(figsize=(10,10)) ax = fig.add_axes([0.1,0.1,0.85,0.85]) scale=50.0 scatter = plt.scatter(x,y, s=scale, c=labels, cmap=mc.ListedColormap(colors)) plt.xlabel(label1,fontsize=20,font_properties=fp2) plt.ylabel(label2,fontsize=20,font_properties=fp2) plt.xticks(fontsize=15) plt.yticks(fontsize=15) plt.title('IRIS DATA',fontsize=30,font_properties=fp2) handles, labels = scatter.legend_elements(prop="colors", alpha=0.6) legend = ax.legend(handles, species, loc="best", shadow=True, prop=fp3) fname = "Iris-scatter-plot_X_" + str1+"_Y_"+str2 f1 = fname+".jpg" f2 = fname+".pdf" plt.savefig(f1) plt.savefig(f2) plt.show() def goodParams(str1, str2): str_set = {'SL', 'SW', 'PL', 'PW'} if ((str1 != str2) and (str1 in str_set) and (str2 in str_set)): return True else: return False if __name__ == "__main__": num_args = len(sys.argv) if (num_args != 3): print("python IrisScatterPlot.py [a pair from (SL SW PL PW)] (e.g. SL PL )") sys.exit() str1 = sys.argv[1] str2 = sys.argv[2] if (not goodParams(str1, str2)): print("入力パラメータはSL,SW,PL,PWの4つの属性名から異なる2つを選択してください") sys.exit() fname = "iris.csv" try: with open(fname, "r", newline='', encoding='utf-8') as fin: lines = csv.reader(fin, delimiter=',') data = [] first = True for line in lines: if first: first = False continue iris = Iris(line) data.append(iris) runScatterPlot(str1, str2, data) except FileNotFoundError: print("ファイル:",fname," が見つかりません") sys.exit()

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

jimbe

2021/11/14 07:10

タグの c は c言語を表すためのものです。 幾らエラーメッセージに "c" が含まれるとはいえ、Python のご質問であれば外して頂いたほうが良いように思います。
soft_cream

2021/11/14 07:17

何かC言語と関係するエラーなのかと勘違いしていました。 修正させていただきました。

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

Matplotlib

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

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

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