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

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

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

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Jupyter

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

Q&A

解決済

1回答

1021閲覧

グラフの合計値を可視化する方法

minori411

総合スコア7

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Jupyter

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

0グッド

0クリップ

投稿2021/04/24 23:18

編集2021/04/24 23:26

イメージ説明

OS:Windows
環境:Jupyter notebook

現在このようなグラフを作成していますが、青とオレンジの合計値をグラフの上にそれぞれ可視化したいと思っています。
試行錯誤しましたがやり方がわかりません。
またグラフの中の数値のフォントサイズを変える方法はありますか?

どなたか教えていただけないでしょうか?

%matplotlib inline
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import japanize_matplotlib
df=pd.read_excel('精神疾患を有する総患者数の推移2.xlsx')
df1=pd.pivot_table(df, columns='年度', index='患者数')

df1
df1.columns = df1.columns.droplevel(0)
df2=df1.iloc[::-1]
df2.columns=df2.columns.astype(str)
fig, ax = plt.subplots(figsize=(10, 6))
for i in range(len(df2)):
ax.bar(df2.columns,
df2.iloc[i],
bottom=df2.iloc[:i].sum())
for j in range(len(df2.columns)):
plt.text(x=j,
y=df2.iloc[:i, j].sum() + (df2.iloc[i, j] / 2),
s=df2.iloc[i, j],
ha='center',
va='bottom'
)
for j in range(len(df2.columns)):
plt.text(x=j,
y=df2.iloc[:0, j].sum() + (df2.iloc[0, j] / 2),
s=df2.iloc[0, j],
ha='center',
va='bottom'
)

ax.set_xlabel('年度', fontsize = 18)
ax.set_ylabel('患者数(万)', fontsize = 18)
ax.set_title('精神疾患を有する総患者数の推移',fontsize=28)

ax.legend(df2.index,fontsize=15)

plt.savefig('python.png')
plt.show()

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

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

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

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

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

meg_

2021/04/25 03:05

コードは「コードの挿入」で記入してください。 > 試行錯誤しましたがやり方がわかりません。 試行錯誤した方法を具体的に追記してください。 > またグラフの中の数値のフォントサイズを変える方法はありますか? 具体的にはどこの数値のことを指していますか?
guest

回答1

0

ベストアンサー

データは違いますが、積み上げ棒グラフで合計値の表示と文字のサイズ指定を行なってみました。
plt.text()はグラフ内の任意の座標に文字を配置出来、sizeオプションで文字サイズの指定も可能です。

イメージ説明

python

1import matplotlib.pyplot as plt 2 3 4fig = plt.figure() 5ax = fig.add_subplot(1, 1, 1) 6y1 = [220, 230, 260] 7y2 = [810,940, 870] 8xs = ['2000', '2001', '2002'] 9ax.bar(range(len(xs)), y2, label='B') 10ax.bar(range(len(xs)), y1, label='A') 11 12for j in range(len(xs)): # y1の値を size=10で表示 13 plt.text(x=j, y=y1[j] - 50, s=y1[j], ha='center', va='bottom', size=10) 14 15for j in range(len(xs)): # y2の値を size=10で表示 16 plt.text(x=j, y=y2[j] - 50, s=y2[j], ha='center', va='bottom', size=10) 17 18for j in range(len(xs)): # 合計値をsize=18で表示 19 plt.text(x=j, y=y2[j], s=(y2[j] + y1[j]), ha='center', va='bottom', size=18) 20 21ax.set_xticks(range(len(xs))) 22ax.set_xticklabels(xs) 23 24plt.savefig('plt.png') 25plt.show()

投稿2021/04/29 07:22

hide5stm

総合スコア426

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

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

minori411

2021/04/29 07:46

ご丁寧にありがとうございます! 大変参考になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問