如何调整iplot图表尺寸、背景色及折线分段颜色?
解决方案
以下是满足你所有需求的修改后代码,附带详细说明:
import cufflinks as cf import pandas as pd import streamlit as st cf.go_offline() cf.set_config_file(offline=False, world_readable=True) @st.cache_data def get_data(url): df = pd.read_csv(url) df["date"] = pd.to_datetime(df.date).dt.date df['date'] = pd.DatetimeIndex(df.date) return df url = "https://covid.ourworldindata.org/data/owid-covid-data.csv" data = get_data(url) daily_cases = data.groupby(pd.Grouper(key="date", freq="1D")).aggregate(new_cases=("new_cases", "sum")).reset_index() # 自定义折线拆分的分界日期,可按需修改 split_date = pd.to_datetime("2021-01-01").date() # 生成两段独立的病例数据列 daily_cases['blue_segment'] = daily_cases.apply(lambda x: x['new_cases'] if x['date'].date() <= split_date else None, axis=1) daily_cases['red_segment'] = daily_cases.apply(lambda x: x['new_cases'] if x['date'].date() > split_date else None, axis=1) # 绘制带自定义样式的图表 fig = daily_cases.iplot( kind="line", asFigure=True, x="date", y=['blue_segment', 'red_segment'], colors=['#1f77b4', '#ff4b5c'], # 指定蓝色和红色 width=1000, # 设置图表宽度 height=600, # 设置图表高度 title="全球新冠日增病例趋势" ).update_layout( paper_bgcolor='white', # 整体背景设为白色 plot_bgcolor='white', # 绘图区域背景设为白色 xaxis=dict(gridcolor='#e0e0e0'), # 浅灰色网格线适配白色背景 yaxis=dict(gridcolor='#e0e0e0') ) st.plotly_chart(fig, use_container_width=False)
各需求实现说明:
- 调整宽高:在
iplot()中通过width和height参数设定具体数值,同时关闭st.plotly_chart()的use_container_width,避免自适应覆盖自定义尺寸。 - 白色背景:通过
update_layout()分别设置paper_bgcolor(整体背景)和plot_bgcolor(绘图区背景)为白色,额外调整网格线颜色提升可读性。 - 分段折线+颜色设置:以指定日期为界拆分数据为两列,在
iplot()中同时绘制这两列,并通过colors参数为每段折线分配对应颜色。
内容的提问来源于stack exchange,提问作者mahsa nemati
相关产品推荐
相关产品推荐

