Python绘图 \ 数据可视化
本文旨在介绍Python绘图的基本知识,通过介绍绘图基础知识并具体列举三种常用的绘图工具来帮助读者了解绘图工具的适用。在文末笔者给出了科研绘图的一般格式以供参考。
为了方便大家,先在此放上从Excel中提取数据并直接进行数据处理的代码,读者可以在实操过程中不断深入学习相关知识。
import pandas as pd
import matplotlib.pyplot as plt
file_path = "D:\filepath\example.xlsx"
sheet = pd.read_excel(file_path, sheet_name = "Sheet1")
col_name = sheet.columns
plt.rcParams['xtick.direction'] = 'in'
plt.rcParams['ytick.direction'] = 'in'
plt.rcParams['font.sans-serif']=['Times New Roman']
font1={'family': 'Times New Roman', 'weight': 'light', 'size': 12}
font2={'family': 'Times New Roman', 'weight': 'light', 'size': 16}
plt.title("Title",fontdict=font2)
plt.title("Title")
plt.minorticks_on()
plt.xlabel('x - label',fontdict=font1)
plt.ylabel('y - label',fontdict=font1)
plt.ticklabel_format(axis='both',style='sci')
plt.savefig("example.png",format="png",dpi=600)
linestyle = ['r-+', 'g-o', 'b-*','y-^', 'c-v', 'm-x']
for i in range(1,len(col_name)):
plt.plot(sheet[col_name[0]], sheet[col_name[i]],linestyle[i%len(linestyle)],lw=1.5,label=col_name[i])
plt.legend(loc="upper right",scatterpoints=1,prop=font1,shadow=False,frameon=True)
plt.ticklabel_format(axis='both',style='sci')
plt.savefig("example.png",format="png",dpi=600)
plt.show()
待处理数据如下
处理结果
emmmm,选取的数据不是很好,don’t carry,接下来就是Python绘图与数据可视化的详细介绍了。
绘图基础知识
- 画板figure,画纸Sublpot
- 画纸上最上方是标题title
- 坐标轴Axis
- 图例Legend
- 网格Grid
- 点 Markers
绘图类型
函数名称描述Bar绘制条形图Barh绘制水平条形图Boxplot绘制箱型图Hist绘制直方图his2d绘制2D直方图Pie绘制饼状图Plot在坐标轴上画线或者标记Polar绘制极坐标图Scatter绘制x与y的散点图Stackplot绘制堆叠图Stem用来绘制二维离散数据绘制(又称为”火柴图”)Step绘制阶梯图Quiver绘制一个二维按箭头
接下来,我们对Python中最常适用的三种绘图工具进行介绍。
Matplotlib 是一款用于数据可视化的 Python 软件包,支持跨平台运行,它能够根据 NumPy 数组来绘制 2D 图像,其使用简单、代码清晰易懂。
; PyLab
PyLab 是一个面向 Matplotlib 的绘图库接口,其语法和 MATLAB 十分相近。它和 Pyplot 模快都够实现 Matplotlib 的绘图功能。
import numpy
import pylab
x = numpy.linspace(-3, 3, 30)
y = x**2
pylab.plot(x, y)
pylab.show()
from pylab import *
plot(x, sin(x))
plot(x, cos(x), 'r-')
plot(x, -sin(x), 'g--')
show()
Pyplot
在 Matplotlib 中,面向对象编程的核心思想是创建 图形对象(figure object)。通过图形对象来调用其它的方法和属性,这样有助于我们更好地处理多个画布。在这个过程中,pyplot 负责生成图形对象,并通过该对象来添加一个或多个 axes 对象(即绘图区域)。
Matplotlib 提供了 matplotlib.figure
图形类模块,它包含了创建图形对象的方法。通过调用 pyplot 模块中 figure() 函数来实例化 figure 对象。如下所示:
基础案例
import matplotlib.pyplot as plt
x = [1,2,3,4]
y = [1,4,9,16]
plt.plot(x,y)
plt.show()
绘图属性设置
'''
color:线条颜色
marker:点的形状
linestyle:线条形状
axis:坐标轴范围
'''
plt.plot(x,y,color='r',marker='o',linestyle='dashed')
plt.axis([0,6,0,20])
plt.show()
添加文字
plt.xlabel('x-label')
plt.ylabel('y-label')
plt.title('title')
绘制正弦图像
from matplotlib import pyplot as plt
import numpy as np
import math
x = np.arange(0, math.pi*2, 0.05)
y = np.sin(x)
plt.plot(x,y)
plt.xlabel("angle")
plt.ylabel("sine")
plt.title('sine wave')
plt.show()
描点
import matplotlib.pyplot as plt
import numpy as np
xpoints = np.array([1, 8])
ypoints = np.array([3, 10])
plt.plot(xpoints, ypoints, 'o')
plt.show()
绘制直线
import matplotlib.pyplot as plt
import numpy as np
xpoints = np.array([0, 6])
ypoints = np.array([0, 100])
plt.plot(xpoints, ypoints)
plt.show()
绘制正余弦
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0,4*np.pi,0.1)
y = np.sin(x)
z = np.cos(x)
plt.plot(x,y,x,z)
plt.show()
格式设置
import numpy as np
import matplotlib.pyplot as plt
x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])
plt.plot(x, y)
plt.title("RUNOOB TEST TITLE")
plt.xlabel("x - label")
plt.ylabel("y - label")
plt.show()
subplot() 方法绘制多张图
import matplotlib.pyplot as plt
import numpy as np
xpoints = np.array([0, 6])
ypoints = np.array([0, 100])
plt.subplot(1, 2, 1)
plt.plot(xpoints,ypoints)
plt.title("plot 1")
x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])
plt.subplot(1, 2, 2)
plt.plot(x,y)
plt.title("plot 2")
plt.suptitle("RUNOOB subplot Test")
plt.show()
import matplotlib.pyplot as plt
import numpy as np
x = np.array([0, 6])
y = np.array([0, 100])
plt.subplot(2, 2, 1)
plt.plot(x,y)
plt.title("plot 1")
x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])
plt.subplot(2, 2, 2)
plt.plot(x,y)
plt.title("plot 2")
x = np.array([1, 2, 3, 4])
y = np.array([3, 5, 7, 9])
plt.subplot(2, 2, 3)
plt.plot(x,y)
plt.title("plot 3")
x = np.array([1, 2, 3, 4])
y = np.array([4, 5, 6, 7])
plt.subplot(2, 2, 4)
plt.plot(x,y)
plt.title("plot 4")
plt.suptitle("RUNOOB subplot Test")
plt.show()
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2*np.pi, 400)
y = np.sin(x**2)
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('Simple plot')
f, (ax1, ax2) = plt.subplots(1, 2, sharey=True)
ax1.plot(x, y)
ax1.set_title('Sharing Y axis')
ax2.scatter(x, y)
fig, axs = plt.subplots(2, 2, subplot_kw=dict(projection="polar"))
axs[0, 0].plot(x, y)
axs[1, 1].scatter(x, y)
plt.show()
scatter() 方法来绘制散点图
import matplotlib.pyplot as plt
import numpy as np
x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13])
y = np.array([1, 4, 9, 16, 7, 11, 23, 18, 25, 19, 31, 28, 14])
plt.scatter(x, y)
plt.show()
bar() 绘制柱形图
import matplotlib.pyplot as plt
import numpy as np
x = np.array(["Runoob-1", "Runoob-2", "Runoob-3", "C-RUNOOB"])
y = np.array([12, 22, 6, 18])
plt.bar(x,y)
plt.show()
绘制饼图
import matplotlib.pyplot as plt
import numpy as np
y = np.array([35, 25, 25, 15])
plt.pie(y)
plt.show()
科研绘图
下面笔者给出一种较为全面的绘图程序,读者可自行修改参数适用。
import numpy as np
import matplotlib.pyplot as plt
x = np.array([1, 2, 3, 4, 5, 6])
y1=[1,3,5,7,9,11]
y2=[2,8,13,19,22,29]
plt.rcParams['xtick.direction'] = 'in'
plt.rcParams['ytick.direction'] = 'in'
plt.rcParams['font.sans-serif']=['Times New Roman']
font1={'family': 'Times New Roman', 'weight': 'light', 'size': 12}
font2={'family': 'Times New Roman', 'weight': 'light', 'size': 16}
plt.title("Title",fontdict=font2)
plt.plot(x,y1,'r-',lw=1.5,label="theory",marker = 'o')
plt.plot(x,y2,'b-',lw=1.5,label="simulation",marker = 'o')
plt.xlim((0.5, 6.5))
plt.ylim((0, 36))
plt.title("Title")
plt.minorticks_on()
plt.xlabel('x - label',fontdict=font1)
plt.ylabel('y - label',fontdict=font1)
plt.legend(loc="upper right",scatterpoints=1,prop=font1,shadow=False,frameon=True)
plt.ticklabel_format(axis='both',style='sci')
plt.savefig("example.png",format="png",dpi=600)
plt.show()
运行结果:
格式设置
颜色(color 简写为 c):
蓝色: 'b' (blue)
绿色: 'g' (green)
红色: 'r' (red)![请添加图片描述](https://img-blog.csdnimg.cn/6457112caf4c42dfba77a64ed2d0b3cc.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATW9zdGVyMjQ2OQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
蓝绿色(墨绿色): 'c' (cyan)
红紫色(洋红): 'm' (magenta)
黄色: 'y' (yellow)
黑色: 'k' (black)
白色: 'w' (white)
线型(linestyle 简写为 ls):
实线: '-'
虚线: '--'
虚点线: '-.'
点线: ':'
点: '.'
点型(标记marker):
像素: ','
圆形: 'o'
上三角: '^'
下三角: 'v'
左三角: '<' 右三角: '>'
方形: 's'
加号: '+'
叉形: 'x'
棱形: 'D'
细棱形: 'd'
垂直线: '|'
水平线: '_'
</'>
Original: https://blog.csdn.net/woaiwulima/article/details/122974918
Author: 力语
Title: Python绘图 数据可视化
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/764157/
转载文章受原作者版权保护。转载请注明原作者出处!