python使用matplotlib绘图相关操作

    技术2022-07-15  46

    常用绘制函数

    主要包括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

    Processed: 0.013, SQL: 9