<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          你的表格太丑了!能用Python美化下嗎?

          共 14383字,需瀏覽 29分鐘

           ·

          2021-09-03 09:48

          公眾號:尤而小屋
          作者:Peter
          編輯:Peter

          大家好,我是寶器!

          有時候看到一份表格,沒有任何的顏色修飾,總覺得缺點美觀效果。在Excel中我們可以直接對字體的顏色、大小等進行設(shè)置,還可以進行單元格的顏色填充,在plotly中美化表格輸出主要是有兩種方式:

          • 使用go.Table方法
          • 使用figure_factory的creat_table方法

          導入庫

          import pandas as pd
          import numpy as np

          import plotly_express as px
          import plotly.graph_objects as go  # 方法1:go.Table
          import plotly.figure_factory as ff # 方法2:圖形工廠

          go.Table實現(xiàn)

          該方法類似其他的圖表繪制,直接使用go.Table方法之后往其中加入數(shù)據(jù)

          基礎(chǔ)表格

          添加表頭和單元格中的數(shù)據(jù)

          import plotly.graph_objects as go

          fig = go.Figure(data=[go.Table(
              header=dict(values=['語文''數(shù)學']),  # 表頭:列表形式

              cells=dict(values=[[10090140123], # 單元格添加:第一列元素
                                 [1051357595]])) # 第二列元素
                               ])
          fig.show()

          個性化表格設(shè)置

          import plotly.graph_objects as go

          fig = go.Figure(data=[go.Table(
              header=dict(values=['語文''數(shù)學'],   # 表頭:字典形式
                          line_color="darkslategray",  # 表頭線條顏色
                          fill_color="lightskyblue",  # 表頭填充色
                          align="center"  # 文本顯示位置 'left', 'center', 'right'
                         ), 

              cells=dict(values=[[10090140123], # 單元格添加:第一列元素
                                 [1051357595]], # 第二列元素
                         line_color="darkslategray",  # 單元格線條顏色
                         fill_color="lightcyan",  # 單元格填充色
                         align="center"  # 文本顯示位置
                        ))])

          fig.update_layout(width=600,height=400)

          fig.show()

          DataFrame轉(zhuǎn)成表格

          將DataFrame數(shù)據(jù)快速轉(zhuǎn)成漂亮的表格

          # 繪圖

          fig = go.Figure(
              data=[go.Table(
                  header=dict(values=list(data.columns),  # 表頭取值是data列屬性
                              fill_color='paleturquoise',  # 填充色和文本位置
                              align='left'),
                  cells=dict(values=[data.性別,data.年齡,data.成績],  # 單元格的取值就是每個列屬性的Series取值
                             fill_color='lavender',
                             align='left'
                            )
                  
              )]
          )

          fig.show()

          改變row和column的大小

          有時候單元格的數(shù)據(jù)太長,我們需要進行單元格大小的調(diào)整

          import plotly.graph_objects as go

          values = [["李白 唐代","杜甫 唐代","蘇軾 宋代","王安石 宋代"], # 第一列數(shù)據(jù)
                    
                    ["床前明月,疑是地上霜;舉頭望明月,低頭思故鄉(xiāng)",
                     "國破山河在,城春草木深。感時花濺淚,恨別鳥驚心。<br>烽火連三月,家書抵萬金。白頭騷更短,渾欲不勝簪。",
                     "十年生死兩茫茫,不思量,自難忘。千里孤墳,無處話凄涼。<br>縱使相逢應不識,塵滿面,鬢如霜。<br>夜來幽夢忽還鄉(xiāng),小軒窗,正梳妝。相顧無言,惟有淚千行。<br>料得年年腸斷處,明月夜,短松岡。",
                     "念往昔、繁華競逐。嘆門外樓頭,悲恨相續(xù)。<br>千古憑高,對此謾?quán)禈s辱。<br>六朝舊事隨流水,但寒煙、芳草凝綠。<br>至今商女,時時猶唱后庭遺曲。"
                    ]]


          fig = go.Figure(data=[go.Table(
              columnorder = [1,2],  # 列屬性的順序
              columnwidth = [800,4000],  # 列屬性中元素所占單元格整體大小
              
              # 表頭
              header = dict(
                  values=[["唐宋作家"],["代表作品"]],  # 兩個表頭
                  line_color='darkslategray',  # 線條和填充色
                  fill_color='royalblue',
                  align=['left','center'], # 位置
                  font=dict(color='white', size=12), # 表頭文本的顏色和字體大小
                  font_size=12,
                  height=40  # 高度
              ),
              
              # 單元格設(shè)置
              cells = dict(
                  values=values,  # 數(shù)據(jù)
                  line_color='darkslategray',  # 線條顏色
                  fill=dict(color=['paleturquoise''white']),
                  align=['left''center'],  # 兩個列屬性文本顯示位置
                  font_size=12,  # 字體大小
                  height=50))
          ])

          #fig.update_layout(width=600,height=400)

          fig.show()

          設(shè)置表格漸變色

          import plotly.graph_objects as go

          import pandas as pd

          colors = ['rgb(239, 243, 255)',  # rgb值越接近255,越接近白色
                    'rgb(189, 215, 231)'
                    'rgb(107, 174, 214)',
                    'rgb(59, 130, 189)'
                    'rgb(9, 81, 156)']

          data = {'Year' : [20152016201720182019], 
                  'Color' : colors}

          df = pd.DataFrame(data)

          print(df)

          fig = go.Figure(data=[go.Table(
              # 表頭
            header=dict(
                values=["Color""<b>YEAR</b>"],  # 表頭名稱
                line_color='white'
                fill_color='white',
                align='center'
                font=dict(color='black', size=12)
            ),
              
              # 單元格
            cells=dict(
                values=[df.Color, df.Year],  # 兩個列屬性
                line_color=[df.Color], 
                fill_color=[df.Color],
                align='center'
                font=dict(color='black', size=13)
            ))
          ])

          fig.show()

          表格數(shù)據(jù)滑動

          當DataFrame中的數(shù)據(jù)過多的時候,我們可以進行滑動展示和查看:

          student = pd.DataFrame({"性別":["小明","小紅","小周","小孫","小蘇"] * 100,  # 將數(shù)據(jù)同時擴大100倍
                              "年齡":[19,29,32,20,18] * 100,
                              "性別":["男","女","男","女","男"] * 100,
                              "成績":[590,588,601,670,555] * 100})
          student
          # 繪圖

          fig = go.Figure(
              data=[go.Table(
                  header=dict(values=list(student.columns),  # 表頭取值是data列屬性
                              fill_color='paleturquoise',  # 填充色和文本位置
                              align='left'),
                  cells=dict(values=[student.性別,student.年齡,student.成績],  # 單元格的取值就是每個列屬性的Series取值
                             fill_color='lavender',
                             align='left'
                            )
                  
              )]
          )

          fig.show()

          creat_table

          第二種方法是使用圖形工廠中的creat_table方法來生成

          基礎(chǔ)圖表生成

          DataFrame數(shù)據(jù)生成表格

          import plotly.figure_factory as ff
          fig = ff.create_table(tips)   # 將生成的tips數(shù)據(jù)放入
          fig.show()

          數(shù)據(jù)中添加鏈接

          設(shè)置寬度

          import plotly.figure_factory as ff

          data = [['姓名''年齡''成績'],  # 表頭
                  
                  ['小明'20620],  # 每個列表代表一行記錄
                  ['小紅'22677],
                  ['小周'19606]]

          fig = ff.create_table(data,height_constant=20)  # 改變寬度
          #fig = ff.create_table(data,height_constant=50)

          fig.show()

          改變寬度后的樣子:

          顏色設(shè)置

          import plotly.figure_factory as ff

          # 顏色設(shè)置
          colorscale = [[0'#4d004c'],[.5'#f2e5ff'],[1'#ffffff']]  # 表格中設(shè)置3種顏色
          #colorscale = [[0, '#4d004c'],[.25,'#0ac37d'],[.5, '#f2e5ff'],[.75,'#afc271'],[1, '#1ff1ff']]  # 5種顏色

          fig = ff.create_table(tips, colorscale=colorscale)   

          fig.show()

          字體顏色設(shè)置

          import plotly.figure_factory as ff

          data = [['name''rank'], ['小明'1], ['小紅'2], 
                  ['小周'3], ['小張'4], ['小孫'5], ['小王'6]]

          # 顏色設(shè)置
          colorscale = [[0'#272D31'],[.5'#ff9f9f'],[1'#ffffff']]

          # 字體顏色設(shè)置
          font=['#7CFCFC''#0FEE00''#008B00''#F04F00''#6A0000''#CD0000''#FF3030']

          fig = ff.create_table(data,  # 添加數(shù)據(jù)、顏色
                                colorscale=colorscale, 
                                font_colors=font)

          fig.layout.width=500  # 表格整體寬度設(shè)置

          fig.show()

          圖形和表格聯(lián)用

          采用的消費數(shù)據(jù)集tips

          import plotly.graph_objs as go
          import plotly.figure_factory as ff

          # 添加表格
          fig = ff.create_table(tips)


          # 添加圖形
          fig.add_trace(go.Scatter(
              x=tips["tip"],
              y=tips["total_bill"],
              marker=dict(color='#9099ff'),  # 標記顏色
              name="total_bill <br>tip",
              xaxis='x2', yaxis='y2'
          ))


          fig.add_trace(go.Scatter(
              x=tips["size"],
              y=tips["total_bill"],
              marker=dict(color='#a099af'),
              name="total_bill <br>size",
              xaxis='x2', yaxis='y2'
          ))

          fig.update_layout(
              title_text="消費數(shù)據(jù)圖表聯(lián)合",
              height=500,
              margin={"t":75,"b":100},
              xaxis = {'domain': [0.45]},
              xaxis2 = {'domain': [0.61.]},
              yaxis2 = {'anchor''x2''title''tips'}
              
          )

          fig.show()

          將圖形豎直方向上排列:

          import plotly.graph_objs as go
          import plotly.figure_factory as ff

          # 添加表格
          fig = ff.create_table(tips)

          # 添加圖形
          fig.add_trace(go.Scatter(
              x=tips["tip"],
              y=tips["total_bill"],
              marker=dict(color='#9099ff'),  # 標記顏色
              name="total_bill <br>tip",
              xaxis='x2', yaxis='y2'
          ))

          fig.add_trace(go.Scatter(
              x=tips["size"],
              y=tips["total_bill"],
              marker=dict(color='#a099af'),
              name="total_bill <br>size",
              xaxis='x2', yaxis='y2'
          ))

          fig.update_layout(
              title_text="消費數(shù)據(jù)圖表聯(lián)合",
              height=800,
              margin={"t":75,"l":50},
              yaxis = {'domain': [0.5]},  # domain 圖形占比范圍
              xaxis2 = {'anchor'"y2"},  # anchor表示是和y2一起作為繪圖的坐標軸
              yaxis2 = {'domain': [0.61], 'anchor':'x2''title''tips'
          )

          fig.show()

          瀏覽 103
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  麻豆成人无码精品视频 | 免费看美女黄片操逼视频 | 日韩在线观看视频一区二区三区 | 99久久免费观看视频 | 免费日韩一级片 |