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

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

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

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

NumPy

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

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

Python

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

Q&A

解決済

1回答

8415閲覧

pythonで棒グラフを描きたい:Error:TypeError: only size-1 arrays can be converted to Python scalars

51sep

総合スコア22

Matplotlib

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

NumPy

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

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

Python

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

0グッド

0クリップ

投稿2020/09/02 19:46

pythonで棒グラフを描きたいと思っていますが、以下のエラーが出てしまいます。
「TypeError: only size-1 arrays can be converted to Python scalars」
y値に算出した値を指定しています。
どなたかアドバイスをお願いしてもよろしいでしょうか。

データは以下です。

X=range(10) Y=y print(X) print(Y) #output #range(0, 10) #[[1.5905711e-07 1.8448804e-01 8.0686337e-01 4.6000953e-13 1.0656697e-05 # 1.4969189e-07 9.4143175e-08 1.3818969e-06 2.3538185e-07 8.6359223e-03]]

グラフのプログラムは以下です。

X=range(10) Y=y plt.bar(X,Y, align="center") plt.xticks(X, ['0','1','2','3','4','5','6','7','8','9']) plt.show()

TypeError: only size-1 arrays can be converted to Python scalars

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

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

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

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

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

guest

回答1

0

ベストアンサー

Yの配列が多層になっているのが原因のようです。
これはエラー

python3

1import matplotlib.pyplot as plt 2import numpy as np 3 4X=range(10) 5y=list(map(float, "1.5905711e-07 1.8448804e-01 8.0686337e-01 4.6000953e-13 1.0656697e-05 1.4969189e-07 9.4143175e-08 1.3818969e-06 2.3538185e-07 8.6359223e-03".split())) 6Y = np.array([y]) 7print(Y) 8# [[1.5905711e-07 1.8448804e-01 8.0686337e-01 4.6000953e-13 1.0656697e-05 1.4969189e-07 9.4143175e-08 1.3818969e-06 2.3538185e-07 8.6359223e-03]] 9plt.bar(X,Y, align="center") 10plt.xticks(X, ['0','1','2','3','4','5','6','7','8','9']) 11plt.show() 12# TypeError: only size-1 arrays can be converted to Python scalars

こっちはグラフが出ます

python3

1import matplotlib.pyplot as plt 2import numpy as np 3 4X=range(10) 5y=list(map(float, "1.5905711e-07 1.8448804e-01 8.0686337e-01 4.6000953e-13 1.0656697e-05 1.4969189e-07 9.4143175e-08 1.3818969e-06 2.3538185e-07 8.6359223e-03".split())) 6Y = np.array(y) 7print(Y) 8# [1.5905711e-07 1.8448804e-01 8.0686337e-01 4.6000953e-13 1.0656697e-05 1.4969189e-07 9.4143175e-08 1.3818969e-06 2.3538185e-07 8.6359223e-03] 9plt.bar(X,Y, align="center") 10plt.xticks(X, ['0','1','2','3','4','5','6','7','8','9']) 11plt.show()

投稿2020/09/03 00:45

編集2020/09/03 00:48
jeanbiego

総合スコア3966

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

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

51sep

2020/09/03 02:13

ご回答をどうもありがとうございます! ご提示のプログラムで棒グラフを確認できました。 ところで、素人質問で大変お恥ずかしいのですが、実際には算出した値は「y」の変数名で持たせています。 y=[[1.5905711e-07 1.8448804e-01 ....]] これをご提示のプログラムの"1.5905711e-07 1.8448804e-01..."のところをyを使ってできる?のでしょうか。 (Y=list(map(float, y.split()))みたいな感じで)
jeanbiego

2020/09/03 02:16

Y=y[0]を試してみてください
51sep

2020/09/03 02:41

ご回答をどうもありがとうございます! Y=y[0]で、希望の棒グラフを確認できました! 多層になっているからインデックス[0]で取り出した…イメージでしょうか。 どうもありがとうございました。助かりました。
jeanbiego

2020/09/03 02:42

>多層になっているからインデックス[0]で取り出した…イメージでしょうか。 その通りです。解決したようで良かったです。
51sep

2020/09/03 02:46

どうもありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問