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

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

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

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Matplotlib

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

Python

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

Q&A

解決済

1回答

3868閲覧

matplotlib でグラフと表を重ならないように合わせて表示する方法について

MAYR

総合スコア12

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Matplotlib

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

Python

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

0グッド

2クリップ

投稿2019/01/04 00:50

Matplotlibでグラフと表を合わせて表示させようとすると、以下のように一部文字が重なってしまいます。いい方法がございましたら、教えてください。

test.ipynb

1import pandas as pd 2import matplotlib.pyplot as plt 3%matplotlib inline 4//Comment:グラフの元データ 5name=["1","2","3","4","5","6","7","8","9","10"] 6value=[[-0.49409999999999998], 7 [-0.48880000000000001], 8 [-0.49059999999999998], 9 [-0.4879], 10 [-0.48899999999999999], 11 [-0.48770000000000002], 12 [-0.48859999999999998], 13 [-0.48720000000000002], 14 [-0.4879], 15 [-0.48630000000000001]] 16//Comment:グラフの表示 17plt.figure() 18plt.title("TEST") 19plt.scatter(name, value) 20plt.xlim(None) 21plt.ylim(-1.0,0.0) 22plt.table(cellText=value, 23 rowLabels=name, 24 loc="bottom")

結果

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

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

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

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

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

guest

回答1

0

ベストアンサー

ご質問のコードでは一つのAxesにグラフと表を両方配置しようとしていますね。同一の座標軸(Axes)の中に複数のグラフを同時に表示するのはよく行われると思いますがグラフと表なら別々のAxesに表示した方がレイアウトがしやすいと思います。次のように2x1のAxesを設けて別々に配置してみてはどうでしょう?

python

1import matplotlib.pyplot as plt 2 3# %matplotlib inline 4# Comment:グラフの元データ 5 6name = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"] 7value=[ 8 [-0.4941], 9 [-0.4888], 10 [-0.4906], 11 [-0.4879], 12 [-0.489], 13 [-0.4877], 14 [-0.4886], 15 [-0.4872], 16 [-0.4879], 17 [-0.4863] 18] 19 20# Comment:グラフの表示 21plt.figure() 22plt.subplot(211) # 1つ目のAxes生成 23plt.title("TEST") 24plt.scatter(name, value) 25plt.xlim(None) 26plt.ylim(-1.0, 0.0) 27 28plt.subplot(212) # 2つ目のAxes生成 29plt.table(cellText=value, 30 rowLabels=name, 31 loc="center") # tableはAxes中央に配置 32plt.gca().axis('off') # 2つ目のAxesの座標軸を非表示にする 33plt.tight_layout() # Axes同士の重なりを自動調整 34plt.show()

注1) 一般のPython環境でも動くようNotebook固有と思われる記述(%matplotlib inline)をコメントアウトしてます。
注2) 若干コードの体裁的なところを変更しましたが、実行結果には影響しません。

イメージ説明

投稿2019/01/05 03:25

KSwordOfHaste

総合スコア18392

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

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

KSwordOfHaste

2019/01/05 04:26

あ・・・ごめんなさいtableのセル内の桁合わせをするために余計なコードを書いていたのを忘れてました。回答にある図を出すためにplt.tableの前に value = [['{:.4f}'.format(v) for v in row] for row in value] と書いてました。この行はなくても構わないのですが、ない場合、tableの第2列はご質問の図と同様になります。つまり小数点が一部ずれて表示されます。
MAYR

2019/01/05 04:43

ありがとうございます。 大変助かりました。 今後ともよろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問