You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 01:55:19