python使用matplotlib绘图相关操作

常用绘制函数

主要包括linux下绘图问题,折线图,直方图,散点图,柱状图,堆积柱状图,饼图,热图,绘图线型,坐标轴范围,坐标轴显示,显示标题,显示文字,绘图保存,子图,栅格,标注,重新标定坐标轴等

# 防止linux无显示设备运行程序会出错
# 远程linux且无显示设备时,除非装显示工具,否则就算不报错也无法显示图,但可以保存图
import matplotlib
matplotlib.use('Agg')

# 导入包
import matplotlib.pyplot as plt

x = list(range(5))
y = [4, 5, 6, 3, 4]
z = [6, 8, 9, 7, 1]
choice = "plot"
if choice == "plot":
    plt.plot(x, y)
elif choice == "plot_and_show_point":
    plt.plot(x, y, "r*-", lw=1)  # r表示红色,*表示在点用*显示,-表示实线,lw表示线宽
elif choice == "limit_axis_title":
    plt.plot(x, y)
    plt.xlabel("axis_x")
    plt.ylabel("axis^y")
    plt.title("demo")
    plt.xlim(0, 10)  # x轴范围
    plt.ylim(0, 20)
    plt.savefig("./demo.png") # 保存绘图
elif choice == "plot_two_curve_in_one_fig":
    plt.plot(x ,y)
    plt.plot(x, z)
    plt.legend(["y-x", "z-x"], loc='best')  # 图例,loc='best'是自动选择合适位置显示
elif choice == "subplot":
    plt.figure(1)
    plt.subplot(211)  # 第一张图中的第一张子图
    plt.plot(x, y)
    plt.subplot(212)  # 第一张图中的第二张子图
    plt.plot(x, z)
    plt.figure(2)  # 第二张图
    plt.plot(y,z)  # 默认创建子图subplot(111)
elif choice == "text_annotation":
    plt.plot(x, y)
    plt.text(1, 3, r'$\mu=100,\ \sigma=15$')  # 在坐标(1,3)处显示文字
    plt.grid(True)  # 打开栅格
    # 标注,箭头端在xy处,"this line"文字显示在xytext, 黑色箭头
    plt.annotate('this line', xy=(2.5, 4.5), xytext=(2, 3.5), arrowprops=dict(facecolor='black', shrink=0.01))
elif choice == "rename_axis":
    # 自己标定坐标轴
    plt.plot(x ,y)
    # plt.axis([-4,4,-1.2,1.2])
    # 设置轴记号
    plt.xticks([0, 1, 2, 3, 4], [r'a', r'b', r'c', r'd', r'd'])
    plt.yticks([4, 5], [r'what', r'how'])
elif choice == "zhi_fang_tu":
    plt.hist(y, 2)  # 切成2个bin显示
elif choice == "san_dian_tu":
    plt.scatter(x, y)
elif choice == "tiao_xing_tu": # 条形图/柱状图/bar
    plt.bar(x, y)
elif choice == "dui_ji_zhu_zhuang_tu":
    plt.bar([3, 4, 5, 6, 7], x, align="center", color=['red'])  # 在指定位置[3, 4, 5, 6, 7]绘制x,红色
    plt.bar([3, 4, 5, 6, 7], y, align="center", bottom=x, color=['blue'])  # 在指定位置并在x的基础上绘制y,蓝色
    p = []
    for x_, y_ in zip(x, y):
        p.append(x_ + y_)
    plt.bar([3, 4, 5, 6, 7], z, align="center", bottom=p, color=['green'])  # 在指定位置并在x+y的基础上绘制z,绿色
elif choice == "bing_tu":
    plt.pie(z, labels=y, autopct='%1.1f%%')  # y是这一块饼是什么,z是这快饼多大
elif choice == "heat_tu":
    # 热图
    import numpy as np
    data = np.random.rand(4, 2)
    rows = list('1234')
    columns = list('MF')
    fig, ax = plt.subplots()
    ax.pcolor(data, cmap=plt.cm.Reds, edgecolor='k')  # 红色风格
    ax.set_xticks(np.arange(0, 2) + 0.5)
    ax.set_yticks(np.arange(0, 4) + 0.5)
    ax.xaxis.tick_bottom()  # 放底下
    ax.yaxis.tick_left()  # 放左边
    ax.set_xticklabels(columns, minor=False, fontsize=20)
    ax.set_yticklabels(rows, minor=False, fontsize=20)

plt.show() # 显示

博客1
博客2
博客3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值