碎語
- 學(xué)習(xí)的正態(tài)曲線:入門容易,精通難
- 積累的正態(tài)曲線:先越讀越多辆布,后越讀越少
Plotly畫圖三步走
- 離線前置準(zhǔn)備
import plotly ## 導(dǎo)入包
import plotly.graph_objs as go ## graph_objs是plotly下的子模塊,用于導(dǎo)入plotly中所有的圖形對(duì)象。導(dǎo)入圖形對(duì)象之后便可以根據(jù)需要呈現(xiàn)的數(shù)據(jù)和自定義的圖形參數(shù)來定義一個(gè)grapg對(duì)象蝇棉,再導(dǎo)入plotly.offline.iplot()中進(jìn)行最終的呈現(xiàn)
import plotly.offline as offline ## 進(jìn)入離線模式
offline.inti_notebook.mode() ## 在Jupyter Notebook中顯示,如果只想生成一個(gè)HTML的鏈接這步可以省略
- 可視化組成的部分
圖像最終的展現(xiàn)由:數(shù)據(jù)部分(trace)芥永、背景(布局:layout)部分兩部分組成篡殷。Plotly分開定義這兩部分,然后使用go.Figure組裝這兩部分埋涧,最后使用plotly.offline.iplot(fig)畫圖:
第一步:定義Trace
根據(jù)數(shù)據(jù)選擇你需要的圖表板辽,構(gòu)造一個(gè)Trace,以散點(diǎn)圖為例:
Trace = go.Scatter(
x = df.index,#X軸的值奇瘦,這里取得的是DF的索引,工作中使用的多
y = df['aa'],#y軸的值劲弦,這里取得的是DF的某一列耳标。
mode = 'markers+lines',#散點(diǎn)的類型,這種事點(diǎn)和線的連接
market = dict(),#字典邑跪,點(diǎn)的設(shè)置次坡,大小等等
name = '',#圖例名稱
text = df['aa'],#設(shè)置數(shù)據(jù)標(biāo)簽的值,散點(diǎn)此處的數(shù)據(jù)標(biāo)簽不會(huì)顯示画畅,是鼠標(biāo)放在上面會(huì)有顯示砸琅,所以要想使用顯性的數(shù)據(jù)標(biāo)簽,則需要使用注釋
textposition = 'right',#數(shù)據(jù)標(biāo)簽的位置
textfont = dict(size = 100,color = 'black')#數(shù)據(jù)標(biāo)簽的大小等屬性轴踱,其屬性都放在字典中
)
data = [Trace] ##把圖像放在list中
由于參數(shù)太多提供了部分通用的參數(shù)症脂,具體個(gè)圖形的參數(shù),有多不同淫僻,我會(huì)在后面每一個(gè)圖形中細(xì)聊诱篷。
第二步:定義Layout
此步主要是定義布局相關(guān)的參數(shù),主要有文字雳灵、標(biāo)題棕所、大小、背景悯辙、坐標(biāo)軸橙凳、圖例
layout = go.Layout(
font = dirt(family = 'arial',size = 16 ,color = ''),#用在此處是控制全局的字體字典類型
title = 'aa',#標(biāo)題,圖像的主標(biāo)題
titlefont = dict(family= '',size = '',color = ''),#此處獨(dú)立控制主標(biāo)題的字體
autosize = False,#bool笑撞,圖像的大小是否自動(dòng)
width = 34 ,# int,圖像的寬度
height = 50,# int ,圖像的高度
plot_bgcolor = '',str岛啸,背景顏色
xaxis = dict(
title = 'aa',#坐標(biāo)軸標(biāo)題
titlefont = dict(),#參數(shù)與之前一樣
type = 'category',#str型,用于控制橫坐標(biāo)軸類型茴肥,'-'表示根據(jù)輸入數(shù)據(jù)自適應(yīng)調(diào)整坚踩,'linear'表示線性坐標(biāo)軸,'log'表示對(duì)數(shù)坐標(biāo)軸瓤狐,'date'表示日期型坐標(biāo)軸瞬铸,'category'表示分類型坐標(biāo)軸,默認(rèn)為'-'
autorange = bool,#bool型或'reversed'础锐,控制是否根據(jù)橫坐標(biāo)對(duì)應(yīng)的數(shù)據(jù)自動(dòng)調(diào)整坐標(biāo)軸范圍嗓节,默認(rèn)為True
range = [起點(diǎn),終點(diǎn)],#list型皆警,控制橫坐標(biāo)軸的區(qū)間范圍拦宣,自行設(shè)置無默認(rèn)項(xiàng),取決于橫坐標(biāo)軸的數(shù)據(jù)類型,格式均為[左端點(diǎn),右端點(diǎn)]
tickmode = 'auto',#str型鸵隧,設(shè)置坐標(biāo)軸刻度的格式绸罗,'auto'表示自動(dòng)根據(jù)輸入的數(shù)據(jù)來決定,'linear'表示線性的數(shù)值型豆瘫,'array'表示由自定義的數(shù)組來表示(用數(shù)組來自定義刻度標(biāo)簽時(shí)必須選擇此項(xiàng))
tickvals=[],#list珊蟀、numpy array或pandas中的series,作為坐標(biāo)軸刻度標(biāo)簽的替代(tickmode此時(shí)必須被設(shè)置為'array')
ticks = '',str型外驱,控制刻度標(biāo)簽的書寫位置育灸,'outside'表示在外側(cè)顯示,'inside'表示在內(nèi)側(cè)顯示昵宇,''表示不顯示
tickfont = dirt(),字典型磅崭,同前面所有字典型字體控制參數(shù),用于對(duì)刻度標(biāo)簽進(jìn)行單獨(dú)控制
tickangle = 12,#int型趟薄,設(shè)置刻度標(biāo)簽的旋轉(zhuǎn)角度
showgrid = Ture,#bool型,控制是否繪制出該坐標(biāo)軸上的直線部分
), #如果要設(shè)置第二坐標(biāo)則使用xaxis2 = dict()
showlegend = True,#bool型典徊,控制是否有圖例
legend = dict(
x = 1,#int,圖例位置的x值
y = 2,#int,圖例位置的y值
font = dict(),#字典型杭煎,與前面一樣
orientation = '',str,設(shè)置圖例各元素的堆疊方向,'v'表示豎直卒落,'h'表示水平堆疊
)
)
annotations:給圖表加上注釋
- 主要是給數(shù)據(jù)加上標(biāo)簽羡铲,trace中的txet是也是給數(shù)據(jù)加上標(biāo)簽,但是這個(gè)標(biāo)簽只有你鼠標(biāo)放在相應(yīng)的點(diǎn)上才會(huì)有儡毕,不會(huì)像Excel中顯性的顯示也切。
- 一般注釋都要放在列表中,每一個(gè)注釋都是有一個(gè)字典組成腰湾,所以要注釋多個(gè)點(diǎn)時(shí)雷恃,最好寫循環(huán),然后使用layout['annotations'] = annotations费坊,添加到layout中
annotations = [dict(x = 12,#數(shù)值倒槐,注釋位置x值
y = 13,#數(shù)值,注釋位置y值
text = '',str,注釋的值
font = dict(),#與前面一樣
showarrow = False,#bool附井,注釋的箭頭是否顯示
)]
第三步:fig:整合圖和圖層
fig = go.Figure(data = data ,layout = layout)
plotly.offline.ipolt(
fig,#fig或者是data
show_link = True,#bool,是否顯示鏈接讨越,圖右下角
link_text = '',#str,鏈接的名字
filename = '',#str,文件夾的名字
image = '',#str,圖片的類型'None'|'png' |'jpeg' |'svg' |'webp'
image_height = 32,#數(shù)值,圖片的高度
image_width = 22 ,#數(shù)值永毅,圖片的寬度
)
結(jié)束語
如果我不能讓您看懂把跨,那是我的問題,如果有疑問可以關(guān)注我沼死,然后私聊我着逐,我會(huì)盡最大的努力幫助你