python(14)-matplotlib(1)-折线图

本文详细介绍使用Matplotlib绘制折线图的方法,包括中文坐标、时序格式化、坐标刻度自定义、多条曲线、网格线、添加标注及曲线属性修改等高级技巧。

matplotlib是绘图基本库。
1.基本步骤
2.折线图(中文坐标,时序格式化,坐标刻度自定义,多条曲线,网格线,添加标注,曲线属性修改)


1,最基本的折线图如下图所示:

   代码:

import matplotlib.pyplot as plt

def draw_line():
    plt.figure()
    x = [0, 1, 2, 3]
    y = [0, 1, 1, 3]
    plt.plot(x, y)
    plt.show()

2.时间序列的多条折线图

直接上代码

"""
基本步骤:
1.导入包 import matplotlib.pyplot as plt
2.x,y 坐标设置   x=[0,1,2,3]
                 y=[0,1,1,3]
3.画图  plt.plot(x,y)
4.显示 plt.show()

1.初始化
2.画框 横、纵坐标,标题、网格
3.数据 list array
4.线的属性、颜色、形状
5.多条线

#取随机数
def m_random():
        整数 np.random.randint(2, size=10) [low, high)
             np.random.randint(5, size=(2, 4))
        浮点 (b - a) * random_sample() + a
             np.random.random_sample()

             5 * np.random.random_sample((3, 2)) - 5
#两个np数组或者叫向量相加
def npAdd():


"""
"""
def draw_lines():

  
"""
import matplotlib.pyplot as plt
import random
import numpy as np
import pandas as pd
from matplotlib.font_manager import FontProperties

def draw_line():
    plt.figure()
    x = [0, 1, 2, 3]
    y = [0, 1, 1, 3]
    plt.plot(x, y)
    plt.show()

# 解决中文显示问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

#线坐标
def line_xy():

    line_list = []
    return line_list

#取随机数
def m_random():
    m_nums=10  #个数
    #1.随机整数 #取[10,1000)之间 10个随机整数
    m_int = np.random.randint(10,1000, size=10)
    """
    [75 13 40 72 59 52 25 56 93 41]
    """
    # 2.数组 #取[10,1000)之间 10个随机整数
    arr=np.random.randint(5, size=(2,4))
    """
    array([[4, 0, 2, 1],
          [3, 2, 2, 0]])
    """
    # 3.随机浮点数(b - a) * random_sample() + a
    b = 1000
    a = 10
    m_float = (b - a) * np.random.sample(m_nums) + a
    """
   [347.50801037 864.46588974  30.95790558 219.57325679 633.14244158
    861.40590658  53.43840226 721.61456702 659.02330125 595.60152231]
    """
    m_rc=m_float
    return m_rc



#两个np数组或者叫向量相加
def npAdd():
    total_times = 3
    arr1= np.random.randint(1, 7, size=total_times)
    arr2 = np.random.randint(1, 7, size=total_times)
    result_arr = arr1 + arr2
    print(arr1)
    print(arr2)
    print(result_arr)
    """
    [3 5 5]
    [6 3 6]
    [ 9  8 11]
    """
def setLabel():
    y = [1, 1, 1, 1]
    plt.plot(y, 'ro')
    plt.grid(True)#显示网格
    plt.show()


#模拟数据 时间序列、值、id
#取值范围 low high
def m_timedata(low,high):
    totalNums = 100
    df = pd.DataFrame(np.random.uniform(low, high, (totalNums, 1)),
                      index=pd.date_range(start="2019-12-19", freq='D', periods=totalNums))

    df['id'] = np.arange(totalNums) # df 加一列
    df.columns=["value","id"]#设置列名
    y = df["value"].values   #取这列的值   值
    x = df["value"].index    #取这列的索引 时间
    return x,y

def draw_lines():

    x1,y1=m_timedata(10,50)
    x2, y2 = m_timedata(20, 60)
    x3, y3 = m_timedata(10, 60)

    line1=plt.plot(x1, y1, 'r')    #rgb=红绿蓝,默认为蓝
    line2=plt.plot(x2, y2, 'g--')  # 一起修改为绿色虚线
    line3=plt.plot(x3, y3, 'b')
    plt.setp(line1,  color='r',linewidth='1.0') #设置曲线的宽度
    plt.setp(line2, linewidth='3.0')
    plt.setp(line3, linewidth='6.0')
    plt.grid(True)           #显示网格

    # 修改坐标轴
    y_label=range(0,100,10)#(0,100)指定刻度范围 分10 份
    plt.yticks(y_label)    #指定刻度范围

    plt.title("我的折线图")
    plt.xlabel("time",color="b", fontname='SimHei',fontsize=15) #fontname 字体名称
    plt.ylabel("value",color="b", fontproperties='SimHei',fontsize=20)
    plt.text(2.5, 100, "TEXT1")
    plt.show()

def main():
    draw_lines()
  
if __name__=="__main__":
    main()

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值