一、問題
源碼:這應該是官網上的一個示例,不過我不是在官網上看到的,而是在其他地方看到的
import plotly.express as px
‘’‘氣泡動態圖’’’
df = px.data.gapminder()#預設數據
fig = px.scatter(df, x="gdpPercap", y="lifeExp", animation_frame="year", animation_group="country",
size="pop", color="continent", hover_name="country",
log_x=True, size_max=55, range_x=[100,100000], range_y=[25,90])
#fig["layout"].pop("updatemenus") # optional, drop animation buttons
fig.show()
有了這個源碼後,首先找到
df = px.data.gapminder()
這是一個數據,數據不在本地,而是需要通過網絡進行數據請求,內部似乎有一個request,當導入時就會自動request相應數據
數據內容爲:
其格式爲<class ‘pandas.core.frame.DataFrame’>
是pandas的dataframe
因此照葫蘆畫瓢,隨意在excel中建立了一個test格式數據,用pandas讀取
path = 'J:\PyCharm項目\項目\項目二_文書內容提取\輸出模塊\word_data.xlsx'
data_frame = pd.read_excel(path,index_col=None)
print(type(data_frame))
print(data_frame)
<class ‘pandas.core.frame.DataFrame’>
格式一致
import pandas as pd
import plotly.express as px
path = 'J:\PyCharm項目\項目\項目二_文書內容提取\輸出模塊\word_data.xlsx'
data_frame = pd.read_excel(path,index_col=None)
print(type(data_frame))
print(data_frame)
fig =px.bar(data_frame, x="頻率",y='分詞', animation_frame="year",
orientation = 'h',range_x=[0, data_frame.頻率.max()],color = '分詞'
)
原本數據只有兩列,索引和值,但是動態效果需要animation_frame,就隨便弄了個年份,
年份內容爲行值(請注意問題就在這裏,後面會說到)!!!!!
格式爲:
結果輸出了這樣的內容
動態也能動,但是就是特別難道,只有一個數據,和上面示例的完全不一樣
太難看了,佔據了整個版面
二、解決路徑
一、參數
我一直以爲是參數的原因,即是不是某個參數我沒有加上,導致圖片僅顯示一個條塊,而不是有很多條形一起動
結果這幾天找遍了相關文章,也看來官方文檔,始終沒有找到這個參數
找到一個比較有用的參數中文解釋文章《可視化神器Plotly_Express詳解》,鏈接: link.
但是在參數以及api方法尋找中,發現其實圖形可以疊加,例如《python繪製折線圖(多條)》,鏈接: link.
多條折線圖,需要構造多個繪圖方法
因而我想是不是需要多次繪圖即將
fig =px.bar(data_frame, x="頻率",y='分詞', animation_frame="year",
orientation = 'h',range_x=[0, data_frame.頻率.max()],color = '分詞'
)
fig_ =px.bar(data_frame, x="頻率",y='分詞', animation_frame="year",
orientation = 'h',range_x=[0, data_frame.頻率.max()],color = '分詞'
)
data=[fig,fig_]
figs=go.Figure(data=data, layout=layout)
figs.show()
變成這樣兩個方法,然後通過go.Figure()將之組合起來,但是仍然不行
二、數據格式
今天突然發現是數據格式問題,year和分詞的數量上需要相當,也即數據需要是類型化的,是幾類數據的合併數據集
如:test2
這樣導入後才能形成多個條形圖,因爲如上所示其實就是幾類數據的合併展示,將每一類數據作爲一個條形
之後: