首頁 > 軟體

Python利用D3Blocks繪製可動態互動的圖表

2023-02-05 14:00:20

今天小編給大家來介紹一款十分好用的視覺化模組,D3Blocks,不僅可以用來繪製可動態互動的圖表,並且匯出的圖表可以是HTML格式,方便在瀏覽器上面呈現。

熱力圖

熱力圖是一種通過對色塊著色來顯示資料的統計圖表。繪圖時需要指定顏色對映的規則。例如較大的值由較深的顏色表示,而較小的值由較淺的顏色表示等等。熱力圖適用於檢視總體的情況,發現異常值、顯示多個變數之間的差異,以及檢測它們之間是否存在任何相關性。

我們這裡來嘗試繪製一張簡單的熱力圖,程式碼如下

from d3blocks import D3Blocks
 
# 初始化
d3 = D3Blocks()
 
# 匯入資料集
df = d3.import_example('energy')
 
# 繪製熱力圖
d3.heatmap(df, showfig=True, stroke='red', vmax=10, figsize=(700,700))

output

粒子圖

D3Blocks模組當的particles()方法可以方便我們將任何字型轉換成帶有動態效果的粒子圖,跟隨著滑鼠的移動,圖表中的元素也會動態的起伏飛舞,程式碼如下

# 匯入模組
from d3blocks import D3Blocks
 
# 初始化
d3 = D3Blocks()
 
# 繪製粒子圖
d3.particles('D3Blocks', collision=0.05, spacing=10, figsize=[1200, 500])

output

時間序列圖

時間序列的折線圖,又被稱為是趨勢圖,是以時間為橫軸,觀察變數為縱軸,用來反映時間與數量之間的關係,這裡我們呼叫的是timeseries()方法,程式碼如下

# 匯入模組
from d3blocks import D3Blocks
 
# 初始化
d3 = D3Blocks()
 
# 匯入資料集
df = d3.import_example('climate')
 
# 列印出前面5行
print(df.head())
 
# 繪製圖表
d3.timeseries(df, datetime='date', dt_format='%Y-%m-%d %H:%M:%S', fontsize=10)

output

桑基圖

桑基圖是用於描述一組值到另一組值的流向的圖表。在圖表的內部,不同的線條代表了不同的流量分流情況,線條的寬度代表此分值所代表的資料大小。通常用於能源、材料成分、金融等資料的視覺化分析。這裡我們呼叫的是sankey()方法來實現,程式碼如下

from d3blocks import D3Blocks
 
# 初始化
d3 = D3Blocks()
 
# 匯入資料集
df = d3.import_example('energy')
 
# 繪製圖表
d3.sankey(df, link={"color": "source-target"})

output

小提琴圖

小提琴圖可以用來繪製資料的分佈以及其概率密度,針對的是數值型的變數,這種圖表結合了箱型圖和密度圖的特徵,主要用來顯示資料的分佈形狀。這裡我們呼叫violin()方法來實現,程式碼如下

# 匯入模組
from d3blocks import D3Blocks
 
# 初始化
d3 = D3Blocks()
 
# 匯入資料集
df = d3.import_example('cancer')
 
# 顯示的格式
tooltip = df['labels'].values + ' <br /> Survival: ' + df['survival_months'].astype(str).values
 
# 視覺化圖表
d3.violin(x=df['labels'].values, # X軸上的值
          y=df['age'].values,    # 年齡
          tooltip=tooltip,       # 顯示的格式
          bins=50,               # bins的大小
          size=df['survival_months'].values/10, # 點狀的大小
          x_order=['acc', 'kich', 'brca', 'lgg', 'blca', 'coad', 'ov'], # X軸的上的值
          figsize=[None, None],                                    # 圖表的大小
          filepath='violine_demo.html')

output

散點圖

散點圖通常用於檢視X軸與Y軸之間是否有關聯,它的繪製,我們這裡呼叫的是scatter()方法,程式碼如下

# 匯入模組
from d3blocks import D3Blocks
 
# 初始化
d3 = D3Blocks()
 
# 匯入資料集
df = d3.import_example('cancer')
 
# 顯示資料的格式
tooltip=df['labels'].values + ' <br /> Survival: ' + df['survival_months'].astype(str).str[0:4].values
# 散點的大小
size = df['survival_months'].fillna(1).values / 10
 
# 繪製圖表
d3.scatter(df['x'].values,               
           df['y'].values,            
           x1=df['PC1'].values,         
           y1=df['PC2'].values,         
           scale=True,                  
           label_radio=['tSNE', 'PCA'], # 不同標籤的種類
           size=size,                   
           color=df['labels'].values,   
           stroke='#000000',            
           opacity=0.4,                 # 透明度
           tooltip=tooltip,             # 顯示的格式
           cmap='tab20',                # 顏色
           filepath='c://temp//scatter_demo.html')

output

弦圖

弦圖是一種顯示資料矩陣中內部資料之間相互關係的圖形視覺化方法。在弦圖內,資料圍繞一個圓呈放射狀排列,資料點之間的關係通常繪製為連線資料的圓弧。這裡我們呼叫chord()方法來實現,程式碼如下

from d3blocks import D3Blocks
 
# 初始化
d3 = D3Blocks()
 
# 匯入資料集
df = d3.import_example('energy')
 
# 繪製圖表
d3.chord(df, filepath='chord_demo.html')

output

網路圖

除了上面這幾種圖表之外,D3Blocks模組還可以來繪製社群網路圖,這裡用到的是d3graph()方法,程式碼如下

from d3blocks import D3Blocks
 
# 初始化
d3 = D3Blocks()
 
# 匯入資料集
df = d3.import_example('energy')
 
# 列印出前5行資料
print(df)
 
# 初始化網路圖
d3.d3graph(df, showfig=False)
 
# 每個節點打上顏色
d3.D3graph.set_node_properties(color='cluster')
 
# 調整每個節點的位置
d3.D3graph.node_properties['Thermal_generation']['size']=20
d3.D3graph.node_properties['Thermal_generation']['edge_color']='#000fff' # 藍色的節點
d3.D3graph.node_properties['Thermal_generation']['edge_size']=3 # Node-edge Size
 
# 調整每個連線的位置
d3.D3graph.edge_properties['Solar', 'Solar_Thermal']['color']='#000fff'
d3.D3graph.edge_properties['Solar', 'Solar_Thermal']['weight_scaled']=10
 
# 繪製圖表
d3.D3graph.show()

output

以上就是Python利用D3Blocks繪製可動態互動的圖表的詳細內容,更多關於Python D3Blocks圖表的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com