Python 绘图笔记

一、绘制一个简单图

代码如下(示例):

import matplotlib.pyplot as plt
import numpy as np

    result = []     # 统计数据
    max_iter_num = * # int类型 
    ...
        # 循环内
    	result.append((a,b,c))
    ...
    result = np.array(result) 
    
    ....
    # matplotlib中文支持 
    plt.rcParams['font.sans-serif'] = ['SimHei']  # aaaaa.py 步骤一(替换sans-serif字体)
    plt.rcParams['axes.unicode_minus'] = False  # 步骤二(解决坐标轴负数的负号显示问题)
 
    x = range(max_iter_num) 
    plt.plot(x,result [:,0], 'r', label='**', linestyle='-')   # linestyle、marker设置线条;label线的名称
    plt.plot(x,result [:,1], color='b',, label='***', marker='o')
    plt.plot(x,result [:,2], 'g', label='****')
    
    plt.legend(loc='upper left', fontsize=9)  # 设置标签位置、标签字体大小,显示图例
    plt.grid()  # 添加网格
    plt.xlabel('***')  # 横轴标题
    plt.ylabel('***')  # 纵轴标题
    plt.title('**')    # 主标题
    plt.show()

链接:
python画图–线条和颜色(查询):https://blog.csdn.net/alva_bobo/article/details/78087433

二、实现一张图中绘制多个子图

代码如下(示例):

import matplotlib.pyplot as plt
    
    plt.figure()
    # 坐标轴的刻度设置向内(in)或向外(out)
	plt.rcParams['xtick.direction'] = 'in'
	plt.rcParams['ytick.direction'] = 'in'
	
    plt.subplot(2, 2, 1)      #第一个子图
    plt.xticks(fontsize=7.5)                                                  #设置刻度字体大小
    plt.yticks(fontsize=7.5)
    plt.title("**", fontdict={'weight': 'normal', 'size': 9})            #子图的标题内容,设置标题字体大小
    plt.scatter(result[0, 1], result[0, 2], color='black')
    plt.plot(result[0, 1], result[0, 0].predict(result[0, 1]), color='blue', linewidth=3)

    plt.subplot(2, 2, 2)      #第二个子图
    plt.xticks(fontsize=7.5)
    plt.yticks(fontsize=7.5)
    plt.title("***", fontdict={'weight': 'normal', 'size': 9})   
    # plt.title("***", ..., y=-0.2) 添加‘y=-0.2’,将标题位于该图的正下方
    plt.scatter(result[1, 1], result[1, 2], color='black')
    plt.plot(result[1, 1], result[1, 0].predict(result[1, 1]), color='blue', linewidth=3)

    plt.subplot(2, 3, 4)      #第三个子图
    plt.xticks(fontsize=7.5)
    plt.yticks(fontsize=7.5)
    plt.title("****", fontdict={'weight': 'normal', 'size': 9})
    plt.scatter(result[2, 1], result[2, 2], color='black')
    plt.plot(result[2, 1], result[2, 0].predict(result[2, 1]), color='blue', linewidth=3)
    
    ......
    # 调整子图与子图之间的距离,hspace和wspace参数最有用
    plt.subplots_adjust(hspace=0.2, wspace=0.2)  
    # 为给多个子图加总标题,位置在画完所有的子图后,加一句
    plt.suptitle("*****", fontdict={'weight': 'normal', 'size': 20}) 
    plt.show()  # 展示

三、设置字体类型

SimHei:微软雅黑、 FangSong:仿宋、SimSun:宋体
Times New Roman:新罗马

1.设置全局英文字体为新罗马

import matplotlib.pyplot as plt
  
# 全局更改字体
plt.rcParams["font.family"] = "Times New Roman"

......

2.设置 fontname对整体进行修改

import matplotlib.pyplot as plt
  
.....
	....
	plt.title(Data_nameList[n], fontsize=14, fontname='Times New Roman') 
	....
......

3.针对legend图例设置字体(一个图中出现多个label)
使用set_fontproperties能对单个label进行修改

import matplotlib.pyplot as plt
  
	.....
	labelss = plt.legend(loc='upper right').get_texts()
    [label.set_fontname('Times New Roman') for label in labelss]  # 新罗马
     label = labelss[0]
     label.set_fontproperties('SimSun')  # 宋体
     plt.legend(fontsize=9)  # 标签位置,字体大小
	......

四、设置刻度

1.坐标轴的刻度设置向内(in)或向外(out)

import matplotlib.pyplot as plt
 ...... 
	.....
	plt.figure()
	plt.rcParams['xtick.direction'] = 'in'
	plt.rcParams['ytick.direction'] = 'in'
	....
......

2.去掉上、右边框

import matplotlib.pyplot as plt
 ...... 
	.....
	plt.figure()
	axs1 = fig.add_subplot(2, 2, 1)  #22列第一个子图
	axs1.spines['top'].set_visible(False)  # 去掉上边框
    axs1.spines['right'].set_visible(False)  # 去掉右边框
	....
......

3.双对数可视化
1>plt.loglog() 推荐

import matplotlib.pyplot as plt
 ...... 
	.....
	fig = plt.figure(figsize=(5.5, 5.5))
	axs1 = fig.add_subplot(2, 2, i+1)
    axs1.set_xlim(1, 1000)
    axs1.set_ylim(0.0001, 1)
    # X_dict[i], Y_dict[i] 是没有转为log10
	plt.loglog(X_dict[i], Y_dict[i], '.', color='black', marker='.', markersize=4, clip_on=False)
	....
......

2>该方法比较复杂,且含有小数(非整数)

import matplotlib.pyplot as plt
import matplotlib as mpl #1
...... 
#自行设计以10为底
def mjrFormatter(x,pos): # 4
    return "$10^{{{0}}}$".format(x)
......  
	.....
	fig = plt.figure(figsize=(5.5, 5.5))
	axs1 = fig.add_subplot(2, 2, 1)
    axs1.set_xlim(0, 3)
    axs1.set_ylim(-4, 0)
    axs1.text(0.95, 0.85, 'name', transform=axs1.transAxes, ha="right", fontdict={'weight': 'normal', 'size': 10})  # 在轴内任意位置移动title将不必要地复杂化。相反,人们宁愿在所需的位置创建一个text
    axs1.xaxis.set_major_formatter(mpl.ticker.FuncFormatter(mjrFormatter))  # 2
    axs1.yaxis.set_major_formatter(mpl.ticker.FuncFormatter(mjrFormatter))  # 3
    # result[0, 1], result[0, 2]是转为log10
    plt.scatter(result[0, 1], result[0, 2], color='black', clip_on=False, s=4) # 设置散点 s表示点的大小; clip_on=False 将点在图中显示完整
	....
......

扩展学习:

1)plt.scatter(x, y, s, c ,marker, alpha) x,y: x轴与y轴的数据 s: 点的面积 c: 点的颜色 marker: 点的形状 alpha: 透明度

# 设置有边框和头部边框颜色为空right、top、bottom、left
 axs1.spines['right'].set_color('none')
 axs1.spines['top'].set_color('none')
 plt.title("name", y=-0.1, fontdict={'weight': 'normal', 'size': 9}) # 正下方
 plt.title("name", y=0.5, fontdict={'weight': 'normal', 'size': 9}) # 正中间

2) zip方法:是把2个数组糅在一起

 x=[1, 2, 3, 4, 5 ]
 y=[6, 7, 8, 9, 10]
 zip(x, y)
 就得到了[(1, 6), (2, 7), (3, 8), (4, 9), (5, 10)]
...... 

......  
	.....
	X_parameter = []
    Y_parameter = []
    for single_square_feet, single_price_value in zip(X, Y):
       X_parameter.append([float(single_square_feet)])
       Y_parameter.append(float(single_price_value))
	....
......
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Python 代码笔记是对 Python 程序代码的解释和说明。它可以帮助你理解代码的工作原理,并在以后更好地维护和编写代码。常用的代码笔记格式有注释、文档字符串等。示例代码: ```python # 计算平方 def square(x): """ 返回x的平方 """ return x*x print(square(4)) ``` 在上面的代码中,`# 计算平方`是注释,`"""返回x的平方"""`是文档字符串。 ### 回答2: Python代码笔记是程序员在学习和实践Python编程语言时记录的一种文档。它包括通过编写实际的Python代码示例来记录各种语法、函数、模块、库和算法的用法和应用。 Python代码笔记通常用于记录和整理编程语言的基本知识,并用代码示例来演示这些知识的具体使用。因为Python语言本身较为简洁易读,因此在代码笔记中使用Python语言编写示例代码非常方便。 通过编写Python代码笔记,程序员可以更好地理解和掌握Python编程语言的特性和用法。而且代码笔记还可以作为程序员的参考资料,帮助他们在遇到问题时快速找到解决方案并进行复用。 除了记录基本知识之外,Python代码笔记还可以用于记录程序员在实际项目中遇到的问题和解决方案。通过记录这些问题和解决方案,程序员可以在未来的项目中预防和避免相同的问题,并且能够提高自己的编程技巧和经验。 总之,Python代码笔记是程序员学习和实践Python编程语言时记录的一种文档。它可以帮助程序员整理知识、提高编程技巧,并成为他们解决问题和提高效率的有力工具。 ### 回答3: Python代码笔记是程序员在学习和使用Python语言时记录的一种方式。它可以包括以下内容: 首先,Python代码笔记通常会记录Python代码的基本语法和用法。这些笔记会列举Python的关键字、变量类型、运算符、控制流语句等基本知识点,以便在需要的时候进行快速查阅和复习。 其次,Python代码笔记还会记录一些常用的Python库和模块的使用方法。Python具有丰富的第三方库和模块,如numpy、pandas、matplotlib等,这些库在数据处理、科学计算、绘图等领域都有广泛的应用。通过记录库和模块的使用方法,可以帮助程序员实现特定的功能或解决具体的问题。 此外,Python代码笔记还会记录一些常见的编程技巧和经验。比如如何提高代码的效率、如何优化算法、如何进行调试等等。这些技巧和经验是程序员在实际开发中积累的宝贵资料,可以帮助他们更好地解决问题和提高工作效率。 最后,Python代码笔记还可以记录一些项目示例和实践经验。当程序员在开发具体的项目时,他们会遇到各种问题和挑战,记录下来的项目示例和实践经验可以为他们以后的开发工作提供参考和借鉴。这些实践经验可以包括项目的架构设计、数据库操作、接口调用等方面的知识。 综上所述,Python代码笔记是程序员学习和使用Python语言的重要辅助工具,它通过记录基本语法、常用库和模块的使用、编程技巧和经验以及项目示例和实践经验等内容,帮助程序员提高开发效率,解决问题,并不断提升自己的编程能力。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值