一、问题
源码:这应该是官网上的一个示例,不过我不是在官网上看到的,而是在其他地方看到的
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
这样导入后才能形成多个条形图,因为如上所示其实就是几类数据的合并展示,将每一类数据作为一个条形
之后: