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

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

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

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

5749閲覧

pandasで表のセルに色を付けたい

man_

総合スコア45

Python

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2021/04/12 18:29

編集2021/04/12 20:25

#やりたいこと
pythonのpandasで表を作成しています。
そこで、表の中の特定のセルに色を付け、その表を画像データとして保存したい。

#困っていること
以下のサイトを参考にして表を作成していましたが、保存した表に色が付きません。
https://analytics-note.xyz/programming/style-applymap/

現在のコードを以下に示します。
若干コードを諸略していますが、表に関する部分は以下の箇所になります。
また,flow1というリストには、数値データが格納されています。

有識者の方々ご教授のほどよろしく

python

1from argparse import ArgumentParser 2import csv 3import matplotlib.pyplot as plt 4import pandas as pd 5import seaborn as sns 6 7def cell_style(value): 8 if value != value: 9 return "background-color: gray; color: white" 10 if value <= 40: 11 return "background-color: yellow; font-weight: bold" 12 else: 13 return "" 14 15if __name__ == '__main__': 16 17 list1=["a","b","c","d","e","f"] 18 list2=["A","B","C"] 19 df=pd.DataFrame(data=flow1, index=list2, columns=list1) 20 21 df.style.applymap(cell_style) 22 23 24 fig,ax = plt.subplots(figsize=((len(df.columns))*1.2, (len(df))*0.5)) 25 ax.axis('off') 26 tbl = ax.table(cellText=df.values, 27 bbox=[0,0,1,1], 28 colLabels=df.columns, 29 rowLabels=df.index) 30 plt.savefig('table.png')

保存される画像イメージ説明

#環境
OS:ubuntu18.04
言語:python2.7

#追記
###プログラム変更点

python

1 2df.style.applymap(cell_style) 3 4 colors = [["#56b5fd","w","w"],[ "#1ac3f5","w","w"],[ "#1ac3f5","w","w"]] 5 fig,ax = plt.subplots(figsize=((len(df.columns))*1.2, (len(df))*0.5)) 6 ax.axis('off') 7 tbl = ax.table(cellText=df.values, 8 bbox=[0,0,1,1], 9 colLabels=df.columns, 10 rowLabels=df.index, 11 cellColours=colors) 12 plt.savefig('table.png')

###エラー

ValueError:Each row in 'cellColours' must have 6 columns

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

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

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

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

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

guest

回答1

0

ベストアンサー

いろいろの資料を調べて、色が付いたDFを画像に直接に転換できないだと思います。
今回は、ax.table(cellColours=colors) を使って、画像の欄を色が付いた。
このサンプルを参考にしてください。

python

1def cell_style(value): 2 if value != value: 3 return "background-color: gray; color: white" 4 if value <= 40: 5 return "background-color: yellow; font-weight: bold" 6 else: 7 return "" 8 9 10# 適当なデータフレームを作成 11df = pd.DataFrame( 12 np.random.randint(0, 100, size=(5, 3)), 13 columns=["col0", "col1", "col2"] 14 ) 15df.loc[3, "col0"] = None 16df.loc[1, "col2"] = None 17df.style.applymap(cell_style) 18 19 20colors = [["#56b5fd","w","w"],[ "#1ac3f5","w","w"],[ "#1ac3f5","w","w"],[ "#1ac3f5","w","w"],[ "#1ac3f5","w","w"]] 21 22fig,ax = plt.subplots(figsize=((len(df.columns))*1.2, (len(df))*0.5)) 23ax.axis('off') 24tbl = ax.table(cellText=df.values, 25 bbox=[0,0,1,1], 26 colLabels=df.columns, 27 rowLabels=df.index, 28 cellColours=colors ) 29plt.savefig('table.png')

イメージ説明

投稿2021/04/12 19:33

編集2021/04/12 20:06
FredericChang

総合スコア54

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

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

man_

2021/04/12 20:27

FredericChangさん回答ありがとうございます。 私の表は行が3行のため、追記に示すように変更したのですが、エラーが出力されます。エラーの原因は何でしょうか?
FredericChang

2021/04/12 20:44

Before=>colors = [["#56b5fd","w","w"],[ "#1ac3f5","w","w"],[ "#1ac3f5","w","w"]] After=>colors = [["#56b5fd","w","w","w","w","w"],[ "#1ac3f5","w","w","w","w","w"],[ "#1ac3f5","w","w","w","w","w"]] colors の中にデータが足りないだと思います。数を六にしてください。
man_

2021/04/12 22:12

ありがとうございます。 表を作成し保存することができました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問