歡迎關注公眾號:pythonic生物人
holoviews是一個超級簡潔的python可視化工具,后端為bokeh、matplotlib、datashader庫,最擅長干的是一行代碼搞定一張圖(類似seaborn),如下文的河流圖(Sankey);
HoloViews helps you understand your data better, by letting you work seamlessly with both the data and its graphical representation.
歡迎閱讀類似文章(列出公眾號的部分內容)
Python可視化44|畫個“圣誕樹”
Python可視化|Matplotlib40-LaTeX in Matplotlib和python
Python可視化|Matplotlib39-Matplotlib 1.4W+字教程(珍藏版)
Python可視化|Matplotlib38-Matplotlib官方Cheat sheet(上篇)
Python可視化35|matplotlib&seaborn-一些有用的圖
Python可視化34|matplotlib-多子圖繪制(為所欲為版)
Python可視化33|matplotlib-rcParams及繪圖風格(style)設定詳解
Python可視化32|matplotlib-斷裂坐標軸(broken_axis)|圖例(legend)詳解
Python可視化31|matplotlib-圖添加文本(text)及注釋(annotate)
Python可視化30|matplotlib-輔助線(axhline|vlines|axvspa|axhspan)
Python可視化29|matplotlib-餅圖(pie)
Python可視化28|matplotlib繪制韋恩圖(2-6組資料)
Python可視化27|seaborn繪制線型回歸圖曲線
Python可視化26|seaborn繪制分面圖(seaborn.FacetGrid)
Python可視化25|seaborn繪制矩陣圖
Python可視化24|seaborn繪制多變數分布圖(jointplot|JointGrid)
Python可視化23|seaborn.distplot單變數分布圖(直方圖|核密度圖)
Python可視化22|Seaborn.catplot(下)-boxenplot|barplot|countplot圖
Python可視化21|Seaborn.catplot(上)-小提琴圖等四類圖
Python可視化20|Seaborn散點圖&&折線圖
Python可視化19|seborn圖形外觀設定
Python可視化17seborn-箱圖boxplot
Python可視化matplotlib&seborn16-相關性heatmap
Python可視化matplotlib&seborn15-聚類熱圖clustermap
Python可視化matplotlib&seborn14-熱圖heatmap
Python可視化|matplotlib13-直方圖(histogram)詳解
Python可視化|matplotlib12-垂直|水平|堆積條形圖詳解
Python可視化|matplotlib11-繪制折線圖matplotlib.pyplot.plot
Python可視化|matplotlib10-繪制散點圖scatter
Python可視化|matplotlib04-繪圖風格(plt.style)大全
Python可視化|matplotlib03-一文掌握marker和linestyle使用
python可視化|matplotlib02-matplotlib.pyplot坐標軸|刻度值|刻度|標題設定
python可視化|matplotlib01-繪圖方式|圖形結構plotnine
Python可視化43|plotnine≈Python版ggplot2
pygal
Python可視化|pygal37-pygal用法及示例
顏色使用
Python可視化18|seborn-seaborn調色盤(六)
Python|R可視化|09-提取圖片顏色繪圖(五-顏色使用完結篇)
Python可視化|08-Palettable庫中顏色條Colormap(四)
Python可視化|matplotlib07-自帶顏色條Colormap(三)
Python可視化|matplotlib06-外部單顏色(二)
Python可視化|matplotlib05-內置單顏色(一)
目錄
01 - 精彩demo
?02 - 快速上手holoviews
holoviews安裝
從scatter開始
使用“+”添加Layout
使用“*”添加Overlay
添加互動小部件
使用opts個性化圖形設定
更多精彩
01 - 精彩demo

import pandas as pd
import holoviews as hv
hv.extension('matplotlib')
edges_df = pd.read_csv('fb_edges.csv')
nodes_df = pd.read_csv('fb_nodes.csv')
fb_nodes = hv.Nodes(nodes_df).sort()
fb_graph = hv.Graph((edges_df, fb_nodes), label='Facebook Circles') #繪圖
fb_graph.opts(cmap='Set1',
node_color='circle',
fig_size=350,
show_frame=False,
xaxis=None,
yaxis=None,
node_size=10)

edges = pd.read_csv('energy.csv') #匯入資料
sankey = hv.Sankey(edges, label='Energy Diagram') #繪圖
sankey.opts(label_position='left',
edge_color='target',
node_color='index',
cmap='set1') #圖形屬性設定
hv.Sankey(edges, label='Energy Diagram') 一行代碼搞定小面的河流圖~~
# 矩陣圖
import holoviews as hv
from holoviews import opts
hv.extension('bokeh')
from bokeh.sampledata.iris import flowers
from holoviews.operation import gridmatrix
ds = hv.Dataset(flowers)
grouped_by_species = ds.groupby('species', container_type=hv.NdOverlay)
grid = gridmatrix(grouped_by_species, diagonal_type=hv.Scatter)#繪圖
grid.opts(opts.Scatter(tools=['hover', 'box_select'], bgcolor='#efe8e2', fill_alpha=0.2, size=4))
02 - 快速上手holoviews
holoviews安裝
pip install holoviews -i https://pypi.tuna.tsinghua.edu.cn/simple
從scatter開始
import pandas as pd
import numpy as np
import holoviews as hv
from holoviews import opts
hv.extension('bokeh', 'matplotlib') #匯入擴展'bokeh','matplotlib'
station_info = pd.read_csv('station_info.csv')
hv.Scatter(station_info, 'services', 'ridership') #輕松繪制散點圖

使用“+”添加Layout
# 使用“+”添加Layout
hv.Scatter(station_info, 'services', 'ridership') + \
hv.Histogram(
np.histogram(station_info['opened'], bins=24), kdims=['opened'])+\
hv.Scatter(station_info, 'services', 'ridership')

使用“*”添加Overlay
# 使用“*”添加Overlay
taxi_dropoffs = {
hour: arr
for hour, arr in np.load('hourly_taxi_data.npz').items()
}
bounds = (-74.05, 40.70, -73.90, 40.80)
image = hv.Image(taxi_dropoffs['0'], ['lon', 'lat'], bounds=bounds)
points = hv.Points(station_info, ['lon', 'lat'])
image + image * points

添加互動小部件
# 添加互動小部件
dictionary = {
int(hour): hv.Image(arr, ['lon', 'lat'], bounds=bounds)
for hour, arr in taxi_dropoffs.items()
}
hv.HoloMap(dictionary, kdims='Hour')

使用opts個性化圖形設定
# 默認bokeh后端
spike_train = pd.read_csv('spike_train.csv.gz')
curve = hv.Curve(spike_train, 'milliseconds', 'Hertz') # 折線圖
spikes = hv.Spikes(spike_train, 'milliseconds', []) # 條形碼
layout = curve + spikes #
layout

#opts個性化圖形屬性設定
layout.opts(
#Options
opts.Curve(height=200,
width=900,
xaxis=None,
line_width=1.50,
color='red',
tools=['hover']),
opts.Spikes(height=150,
width=900,
yaxis=None,
line_width=0.25,
color='grey')).cols(1)

更多精彩
https://github.com/holoviz/holoviews
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/278082.html
標籤:python
上一篇:二、Java之萬年歷




