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

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

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

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

Q&A

解決済

2回答

4242閲覧

ヒストグラムの棒の上に数値を描きたいのですがうまくいきません。。。

kei24fb

総合スコア10

Python

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

0グッド

0クリップ

投稿2019/01/06 03:49

前提・実現したいこと

ヒストグラムの棒の上に数値を描きたいのですが、うまくいきません。。。
どなたか至急教えていただけないでしょうか。。。

250m number of meshの値をグラフ上に描きたいと思っております。。。

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

TypeError Traceback (most recent call last)
<ipython-input-43-03b272a1e06e> in <module>()
1 a = plt.hist(df["0"], range=(0.1,30))
2 for y in zip(a):
----> 3 plt.text(a, ha='center', va='bottom')
4 plt.title("2018/08/27 20:05:02 VIL")
5 plt.xlabel("VIL[kg/m2]")

TypeError: text() missing 2 required positional arguments: 'y' and 's'

該当のソースコード

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import csv
from PIL import Image

df = pd.read_csv('./csvfile/ATCmrg20180827_201955.csv','r')
len(df)

a = plt.hist(df["0"], range=(0.1,30))
for y in zip(a):
plt.text(a, ha='center', va='bottom')
plt.title("2018/08/27 20:05:02 VIL")
plt.xlabel("VIL[kg/m2]")
plt.ylabel("250m number of mesh")
plt.savefig("200502.pdf")
plt.show()

どなたかご回答よろしくお願いいたします

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

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

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

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

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

guest

回答2

0

TypeError: text() missing 2 required positional arguments: 'y' and 's'
matplotlib.pyplot.text(x, y, s, fontdict=None, withdash=False, **kwargs)[source]¶ Parameters: x, y : scalars The position to place the text. By default, this is in data coordinates. The coordinate system can be changed using the transform parameter. s : str The text.

matplotlib.pyplot.text — Matplotlib 3.0.2 documentation

最低限、位置引数のx,y,sは与える必要があります。xyが座標で、sが表示したい文字列です。

さてplt.histでどうこれらの情報を取得するかですが、実は返り値として戻ってくるので、それが使えます(matplotlib.pyplot.histのドキュメントのReturns:以下参照)。

python

1import numpy as np 2import matplotlib.pyplot as plt 3 4n, bins, _ = plt.hist(np.random.normal(size=1000)) 5xs = (bins[:-1] + bins[1:])/2 # 各柱の端が返るので1つずらして足して2で割ることで真ん中にする 6ys = n 7for x, y in zip(xs, ys): 8 plt.text(x, y, str(y), horizontalalignment="center") 9plt.savefig("result.png") 10

イメージ説明

投稿2019/01/06 05:32

編集2019/01/06 05:54
hayataka2049

総合スコア30933

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

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

kei24fb

2019/01/07 07:28

ご丁寧なご回答ありがとうございます。 うまくいくようにトライしてみます。
kei24fb

2019/01/09 01:29

ヒストグラムの棒の上の小数点以下第一位(.0)を消すことは可能でしょうか。
hayataka2049

2019/01/09 01:36 編集

方法1 ys = n.astype(int) 等として先にint型にする 方法2 str(y)の代わりに "%d" % y とか "{:.0f}".format(y) 等で変換して整数として表示する のどちらかでできます。
guest

0

自己解決

x、y、sの宣言で解決しました

投稿2019/01/07 09:20

kei24fb

総合スコア10

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問