趋势(一)利用python绘制折线图

趋势(一)利用python绘制折线图

折线图( Line Chart)简介

1

折线图用于在连续间隔或时间跨度上显示定量数值,最常用来显示趋势和关系(与其他折线组合起来)。折线图既能直观地显示数量随时间的变化趋势,也能展示两个变量的关系。

快速绘制

  1. 基于matplotlib

    import matplotlib.pyplot as plt
    import numpy as np
    
    # 自定义数据
    values = np.cumsum(np.random.randn(1000,1))
    
    # 绘制折线图
    plt.plot(values)
    plt.show()
    

    2

  2. 基于seaborn

    import seaborn as sns
    import matplotlib.pyplot as plt
    import numpy as np
    
    # 自定义数据
    values = np.cumsum(np.random.randn(1000,1))
    
    # 绘制折线图
    sns.lineplot(x=np.array(range(1, 1001)), y=values.ravel())  # 使用 ravel() 将 values 转化为一维
    plt.show()
    

    3

  3. 基于plotly

    import plotly.graph_objects as go
    import numpy as np
    
    # 自定义数据
    values = np.cumsum(np.random.randn(1000,1))
    
    # 绘制折线图
    fig = go.Figure(data=go.Scatter(x=list(range(1, 1001)), 
                                    y=values.ravel(), 
                                    mode='lines'))
    fig.show()
    

    4

  4. 基于pandas

    import numpy as np
    import matplotlib.pyplot as plt
    import pandas as pd
    
    # 自定义数据
    values = np.cumsum(np.random.randn(1000,1))
    df = pd.DataFrame(values, columns=['Values'])
    
    # 绘制折线图
    df.plot()
    plt.show()
    

    5

定制多样化的折线图

自定义折线图一般是结合使用场景对相关参数进行修改,并辅以其他的绘图知识。参数信息可以通过官网进行查看,其他的绘图知识则更多来源于实战经验,大家不妨将接下来的绘图作为一种学习经验,以便于日后总结。

通过matplotlib绘制多样化的折线图

matplotlib主要利用plot绘制折线图,可以通过matplotlib.pyplot.plot了解更多用法

  1. 修改参数

    import matplotlib as mpl
    import matplotlib.pyplot as plt
    import numpy as np
    import pandas as pd
    
    plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
    
    # 自定义数据
    df=pd.DataFrame({
         'x_values': range(1,11), 'y_values': np.random.randn(10) })
    
    # 初始化布局
    fig = plt.figure(figsize=(12,3))
    
    # 自定义颜色
    plt.subplot(1, 3, 1) 
    plt.plot( 'x_values', 'y_values', data=df, color='skyblue')
    plt.title('自定义颜色')
    
    # 自定义透明度
    plt.subplot(1, 3, 2) 
    plt.plot( 'x_values', 'y_values', data=df, color='skyblue', alpha=0.3)
    plt.title('自定义透明度')
    
    # 自定义线条
    plt.subplot(1, 3, 3) 
    plt.plot( 'x_values', 'y_values', data=df, linestyle='dashed', linewidth=5)
    plt.title('自定义线条')
    
    
    plt.show()
    

    6

  2. 带注释的折线图

    import matplotlib.pyplot as plt
    import numpy as np
    import pandas as pd
    
    plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
    
    # 自定义数据
    dates = []
    
    for date in range(1970,2023):
        dates.append(str(date))
    
    
    sample_size = 2023-1970
    variable = np.random.normal(100,
                                15,
                                sample_size,
                               )
    
    df = pd.DataFrame({
         'date': dates,
                       'value': variable})
    
    
    # 初始化布局
    fig = plt.figure(figsize=(12,8))
    
    
    # 1-基本折线图
    plt.subplot(2, 1, 1) 
    plt.plot(df['date'], df['value'])
    
    # 轴标签
    plt.xlabel('X-axis')
    plt.ylabel('Y-axis')
    plt.title('基本折线图')
    
    # 刻度
    plt.xticks(rotation=45)
    
    
    # 2-带注释的折线图
    plt.subplot(2, 1, 2) 
    plt.plot(df['date'], df['value'])
    
    # 轴标签
    plt.xlabel('X-axis')
    plt.ylabel('Y-axis')
    plt.title('带注释的折线图')
    
    # 刻度
    plt.xticks(rotation=45)
    
    # 添加文本注释
    plt.text(df['date'].iloc[38], # x位置
             df['value'].iloc[1], # y位置
             'What a nice chart!', # 文本注释
             fontsize=13,
             color='red')
    
    # 找到最大值索引
    highest_index = df['value'].idxmax()
    
    # 最高值标记
    plt.scatter(df['date'].iloc[highest_index],
                df['value'].iloc[highest_index],
                color='blue',
                marker='o', # 标记特殊的店
                s=100,
               )
    
    # 计算均值
    median_value = df['value'].median()
    
    # 添加均值线
    plt.axhline(y=median_value, color='green', linestyle='--', label='Reference Line (Median)')
    
    
    fig.tight_layout() # 自动调整间距
    plt.show()
    

    7

  3. 对数变换的折线图

    import matplotlib.pyplot as plt
    from matplotlib.ticker import MultipleLocator
    import numpy as np
    import pandas as pd
    
    plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
    
    # 自定义数据
    x = np.linspace(1, 10, 100)
    y = np.exp(x)
    df = pd.DataFrame({
         'x': x, 'y': y})
    
    # 初始化布局
    fig = plt.figure(figsize=(12,4))
    
    
    # 1-基本折线图
    plt.subplot(1, 2, 1) 
    plt.plot(df['x'], df['y'])
    
    # 轴标签
    plt.xlabel('X-axis')
    plt.ylabel('Y-axis')
    plt.title('基本折线图')
    
    # 添加网格线
    plt.grid(True, linestyle='--', alpha=0.6)
    
    # 2-对数转化折线图
    plt.subplot(1, 2, 2) 
    plt.<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值