g2plot折线图和柱状图结合并且还有缩略轴
时间: 2024-02-14 17:09:03 浏览: 138
您好!感谢您的提问。要实现g2plot折线图和柱状图结合并且还有缩略轴,您可以按照以下步骤进行操作:
1. 导入所需的库和数据。
```python
import pandas as pd
from datetime import datetime
from dateutil.relativedelta import relativedelta
from pyecharts.charts import Line, Bar
from pyecharts import options as opts
from pyecharts.commons.utils import JsCode
from pyecharts.components import Table
from pyecharts.options import ComponentTitleOpts
import pyecharts.options as opts
from pyecharts.charts import Grid
from pyecharts.charts import Line
from pyecharts.charts import Bar
from pyecharts.charts import Timeline
from pyecharts.commons.utils import JsCode
from pyecharts.globals import ThemeType
from pyecharts.faker import Faker
df = pd.read_csv('data.csv')
```
2. 数据处理。将数据按照需要的格式进行处理,并将时间格式转换为datetime类型。
```python
df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d')
df['month'] = df['date'].dt.strftime('%Y-%m')
df = df.groupby('month').agg({'sales': 'sum', 'profit': 'sum'}).reset_index()
```
3. 绘制折线图和柱状图。
```python
line = (
Line()
.add_xaxis(df['month'].tolist())
.add_yaxis('销售额', df['sales'].tolist())
.set_global_opts(
title_opts=opts.TitleOpts(title='销售额趋势图'),
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-45)),
datazoom_opts=[opts.DataZoomOpts(xaxis_index=0, range_start=0, range_end=50)],
)
)
bar = (
Bar()
.add_xaxis(df['month'].tolist())
.add_yaxis('利润', df['profit'].tolist())
.set_global_opts(
title_opts=opts.TitleOpts(title='利润趋势图'),
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-45)),
yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(formatter='{value} 元')),
)
)
```
4. 绘制缩略轴。
```python
data_len = len(df['month'].tolist())
datazoom_slider = (
opts.DataZoomOpts()
.set_slider_width('80%')
.set_slider_height(20)
.set_yaxis_index(0)
.set_xaxis_index(0)
.set_xaxis_type("category")
.set_start(0)
.set_end(50)
.set_zoom_lock(True)
)
base_timeline = (
Timeline()
.add_schema(play_interval=1000, is_auto_play=True, is_loop_play=False)
.add(line, '销售额')
.add(bar, '利润')
)
time_data = df['month'].tolist()
for i in range(data_len):
base_timeline.add_schema(
mark_point=[opts.MarkPointOpts(data=[opts.MarkPointItem(name='月份', x=time_data[i], y=0)])]
)
base_timeline.add_schema(
datazooms=[datazoom_slider],
is_timeline_show=False,
)
```
5. 合并图表。使用Grid将折线图、柱状图和缩略轴合并在一起。
```python
grid_chart = (
Grid()
.add(
base_timeline,
grid_opts=opts.GridOpts(pos_left='5%', pos_right='5%', pos_top='10%', pos_bottom='15%'),
)
.render('line_bar.html')
)
```
这样,您就可以得到一个包含折线图、柱状图和缩略轴的可交互式数据可视化图表了。
阅读全文
相关推荐














