python绘图例子(改改代码差不多能用)

下面是我自己弄出来的一个模板,我感觉有个模板改改代码勉强就能用,特别方便。虽然这个模板也不是很专业,但是反正我是没找到有人会发个模板出来。

例子1:一张图多条线(画一张图单条线其实是画多条线的特殊情况,改一改也能画单条线的图,区别主要在于单条线的话传入的y轴数据是个一维的列表,然后颜色数组、标记数组、标签数组里面的元素变成一个就行了。多条线的话就得传入一个二维的,然后对每一维的数据进行绘图。)
下面是一个py文件,主函数的py文件import这个文件然后调用里面的绘图函数就行。

# coding:utf-8
# author guanlinyi
# 2022/3/7 20:51
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['KaiTi']  # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题

title_fontsize = 18  # 标题的大小
axis_text_fontsize = 18  # 坐标轴的字的大小
axis_fontsize = 15  # 坐标轴数值的大小
legend_fontsize = 13  # 图例的大小

def plot_server_utility3(N, num_t, gap, p_r_server_utiltiy):
    iter = np.arange(0, num_t+0.01, gap) # x轴数据,必须得是一维的数据
    plt.figure()
    print("iter:{:}".format(iter))
    color_array = ['red', 'green', 'blue']  # 颜色数组,可以去查有哪些颜色
    marker_array = ['d', '*', 's']  # 标记数组,可以去查有哪些标记
    # marker_array = ['*', 'v', '^']
    lab_1 = "p_r=5e-8"
    lab_2 = "p_r=5e-6"
    lab_3 = "p_r=1e-5"
    labs = [lab_1, lab_2, lab_3]  # 标签数组。有多少条线这个数组就多少个元素
    lns = []
    # markerfacecolor='none' 加进plt.plot()里面可将点设置为空心
    for i in range(3):
        print("user_0_server_utiltiy[{:}]:{:}".format(i, p_r_server_utiltiy[i])) # 测试语句
        lns_i, = plt.plot(iter, p_r_server_utiltiy[i],
                 color=color_array[i], linewidth=1.0, linestyle='-', marker=marker_array[i],
                 label=labs[i])  # 这里传入x轴的数据和y轴的数据的时候要注意两者是属于什么类型的(一般两个都是一维的列表就不会有什么问题),以及元素个数是否相等。
        lns.append(lns_i)
    # plt.legend(lns, labs, fontsize=legend_fontsize, loc='upper right')  # 图例的大小和位置
    plt.legend(lns, labs, fontsize=legend_fontsize, loc='best') # loc是设置图标的位置,一般设置为best,可以查一下还可以设置成什么,左上,右下,左下,右上
    plt.xlabel('迭代次数', fontsize=axis_text_fontsize)
    plt.ylabel('MEC服务器效用', fontsize=axis_text_fontsize)
    # plt.ticklabel_format(style='sci', scilimits=(0, 0), axis='y')
    plt.xticks(fontsize=axis_fontsize) # x坐标轴数值的大小
    plt.grid()
    # y_range = np.arange(0, 18, 2) # 自己设置y轴的取值范围
    # plt.yticks(y_range, fontsize=axis_fontsize) # y坐标轴数值的大小
    plt.yticks(fontsize=axis_fontsize) #设置y轴坐标轴数值大小
    plt.tight_layout() # 紧密布局
    plt.savefig("./picture3/random&server_utility_N{:},{:}代.png".format(N, num_t))  # 保存位置
    return

例子2:画双y轴

# coding:utf-8
# author guanlinyi
# 2022/3/9 16:04
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['KaiTi']  # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题

title_fontsize = 18  # 标题的大小
axis_text_fontsize = 18  # 坐标轴的字的大小
axis_fontsize = 15  # 坐标轴数值的大小
legend_fontsize = 13  # 图例的大小

def plot_q_p3(N, num_t, gap, iter_sum_q, iter_p_t_i):
    fig = plt.figure()
    ax = fig.add_subplot(111)
    iter1 = np.arange(gap, num_t+0.1, gap)
    print("iter1:{:}".format(iter1))
    print("len(iter1):{:}".format(len(iter1)))
    print("iter_sum_q:{:}".format(iter_sum_q))
    print("len(iter_sum_q):{:}".format(len(iter_sum_q)))
    lns1 = ax.plot(iter1, iter_sum_q, color='red', linewidth=2.0, linestyle='-', marker='d',
                   label='卸载请求用户的总计算资源需求量')
    ax.set_xlabel("迭代次数", fontsize=axis_text_fontsize)  # x坐标轴的字的大小
    ax.set_ylabel("计算资源需求量", fontsize=axis_text_fontsize) # 左边y坐标轴的字的大小
    # ax.set_yticks(np.arange(41, 56, 1)) # 左边y坐标轴的范围
    plt.xticks(fontsize=axis_fontsize) # 左边x坐标轴数值的大小
    plt.yticks(fontsize=axis_fontsize) # 左边y坐标轴数值的大小

    ax2 = ax.twinx()
    iter2 = np.arange(0, num_t+0.1, gap)
    print("iter2:{:}".format(iter2))
    print("len(iter2):{:}".format(len(iter2)))
    print("iter_p_t_i:{:}".format(iter_p_t_i))
    print("len(iter_p_t_i):{:}".format(len(iter_p_t_i)))
    lns2 = ax2.plot(iter2, iter_p_t_i, color='blue', linewidth=1.0, linestyle='-', marker='*',
                    label="MEC服务器的定价")
    ax2.set_ylabel("计算资源的单价", fontsize=axis_text_fontsize) # 右边y坐标轴的字的大小
    # ax2.set_yticks(np.arange(0, 1.2e-3, 0.2e-3)) # 右边y坐标轴的范围
    plt.yticks(fontsize=axis_fontsize) # 右边y坐标轴数值的大小
    ax2.ticklabel_format(style='sci', scilimits=(0, 0), axis='y')

    lns = lns1 + lns2
    labs = [l.get_label() for l in lns] # 从lns获取label
    ax.legend(lns, labs, fontsize=legend_fontsize, loc='lower right') # 图例的大小和位置

    plt.tight_layout()
    plt.savefig("./picture3/iter&q_p N{:},{:}代.png".format(N, num_t))

例子3:这个例子主要是说标签里面如果有希腊字母可以这样用

# coding:utf-8
# author guanlinyi
# 2022/3/7 20:51
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['KaiTi']  # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题

title_fontsize = 18  # 标题的大小
axis_text_fontsize = 18  # 坐标轴的字的大小
axis_fontsize = 15  # 坐标轴数值的大小
legend_fontsize = 13  # 图例的大小

def plot_avg_qvalue3(N, num_t, gap, user_0_avg_qvalues, user_agent_sets):
    iter = np.arange(0, num_t+0.01, gap)  
    plt.figure()
    print("iter:{:}".format(iter))
    color_array = ['red', 'green', 'blue']
    marker_array = ['d', '*', 's']
    # marker_array = ['*', 'v', '^']
    lab_1 = r"$\epsilon$={:},$\gamma$={:},$\lambda$={:}"\
        .format(user_agent_sets[0][0], user_agent_sets[0][1], user_agent_sets[0][2])
    lab_2 = r"$\epsilon$={:},$\gamma$={:},$\lambda$={:}"\
        .format(user_agent_sets[1][0], user_agent_sets[1][1], user_agent_sets[1][2])
    lab_3 = r"$\epsilon$={:},$\gamma$={:},$\lambda$={:}"\
        .format(user_agent_sets[2][0], user_agent_sets[2][1], user_agent_sets[2][2])
    labs = [lab_1, lab_2, lab_3]
    lns = []
    # markerfacecolor='none' 设置为空心
    for i in range(3):
        print("user_0_avg_qvalues[{:}]:{:}".format(i, user_0_avg_qvalues[i]))
        lns_i, = plt.plot(iter, user_0_avg_qvalues[i],
                 color=color_array[i], linewidth=1.0, linestyle='-', marker=marker_array[i],
                 label=labs[i])
        lns.append(lns_i)
    # plt.legend(lns, labs, fontsize=legend_fontsize, loc='upper right')  # 图例的大小和位置
    plt.legend(lns, labs, fontsize=legend_fontsize, loc='best')
    plt.xlabel('迭代次数', fontsize=axis_text_fontsize)
    plt.ylabel('qvalue的平均值', fontsize=axis_text_fontsize)
    # plt.ticklabel_format(style='sci', scilimits=(0, 0), axis='y')
    plt.xticks(fontsize=axis_fontsize) # x坐标轴数值的大小
    plt.grid()
    # y_range = np.arange(0, 18, 2)
    # y_range = np.arange(0, 9, 1)
    # y_range = np.arange(0, 20, 2)

    # y_range = np.arange(-1, 6, 1)
    # plt.yticks(y_range, fontsize=axis_fontsize) # y坐标轴数值的大小
    plt.yticks(fontsize=axis_fontsize)
    # title = "Q-learning算法的收敛性"
    # plt.title(title, fontsize=title_fontsize)
    plt.tight_layout()
    plt.savefig("./picture3/iter&3avg_qvalue_N{:},{:}代.png".format(N, num_t))
    return

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值