Python绘图表学习笔记 matplotlib绘图库

图表上可以直接进行操作

Python绘图表学习笔记 matplotlib绘图库
第一个可以移动整体的图表显示
第二个可以选择一个区域将图整体放大
第三个指出来的可以修改图表的x和y的范围
Python绘图表学习笔记 matplotlib绘图库
如果进行了操作想还原成原来的效果,点击后退
Python绘图表学习笔记 matplotlib绘图库
后退表示直接返回上一层

; 画折线图

参考:https://www.pythonf.cn/read/22457


import matplotlib.pyplot as plt
year = [2011,2012,2013,2014]
pop = [1.2,3.4,4.5,6.5]

plt.plot(year,pop)
plt.show()

Python绘图表学习笔记 matplotlib绘图库

画散点图

绘制折线图

import matplotlib.pyplot as plt
year = [2011,2012,2013,2014]
pop = [1.2,3.4,4.5,6.5]

散点图绘制函数

plt.scatter(year,pop)
plt.show();

Python绘图表学习笔记 matplotlib绘图库

; python matplotlib RuntimeWarning: Glyph xxxxx missing from current font.字体设置问题

参考:https://blog.csdn.net/weixin_43218670/article/details/105840128

Python绘图表学习笔记 matplotlib绘图库
这是错误提示,只需要补全下面代码就行(缺哪个补哪个)
from matplotlib import font_manager as fm, rcParams
import matplotlib as plt

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

修饰图

修饰图中的各类信息

title(’图形名称’) (都放在单引号内)
xlabel(’x轴说明’)
ylabel(’y轴说明’)
text(x,y,’图形说明’)
legend(’图例1’,’图例2’,…)


import matplotlib.pyplot as plt

year = [1950,1970,1990,2010]
pop = [2.3,3.4,5.8,6.5]

plt.fill_between(year,pop,0,color='green')

plt.xlabel('Year')
plt.ylabel('Population')

plt.title('World Population')

plt.yticks([0,2,4,6,8,10],['0B','2B','4B','6B','8B','10B'])

图表清空

画上的图表如果没有清空,会让之后的图表继续覆盖原来的图
参考:https://www.zhihu.com/question/26627112
在画图之前用cla(),亲测可以。下面是一个小例子

import matplotlib.pyplot as plt
import numpy as np

for i in range(1, 5) :
    x = range(0, i)
    y = range(0, i)
    y = np.array(y) * i
    plt.cla()
    plt.scatter(x, y, c = 'r', s = 20)
    plt.savefig("./test_%d.png" % i)

python画三维图

参考:https://blog.csdn.net/u014636245/article/details/82799573

fig = plt.figure()  #定义新的三维坐标轴
ax3 = plt.axes(projection='3d')

#定义三维数据
xx = np.arange(-5,5,0.5)
yy = np.arange(-5,5,0.5)
X, Y = np.meshgrid(xx, yy)
Z = np.sin(X)+np.cos(Y)

#作图
ax3.plot_surface(X,Y,Z,cmap='rainbow')
#ax3.contour(X,Y,Z, zdim='z',offset=-2,cmap='rainbow)   #等高线图,要设置offset,为Z的最小值
plt.show()

Python绘图表学习笔记 matplotlib绘图库
当然也可以用list来实现,以下是我的实现
from matplotlib import pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D

def calc(x,y):
    return x**2+y**2
fig = plt.figure()
ax = Axes3D(fig)
'''
X = np.arange(-4, 4, 0.25)
print(X)
Y = np.arange(-4, 4, 0.25)
'''
X=[]
Y=[]
for i in range(-4,5):
    X.append(i)
for i in range(-4,5):
    Y.append(i)
X, Y = np.meshgrid(X, Y)
Z = calc(X,Y)
具体函数方法可用 help(function) 查看,如:help(ax.plot_surface)
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='rainbow')
plt.show()

效果如下:

Python绘图表学习笔记 matplotlib绘图库
其中rstride=1, cstride=1是行和列的相邻之间的步距

Python生成gif播放图并且Python显示gif

import os

import cv2
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import numpy as np

Inputfile=[]
for i in range(0,10):
    Inputfile.append([i,i**2])
if __name__=="__main__":
    fig=plt.figure()
    xx=[]
    yy=[]
    yyyy=[]
    for i in range(10):
        x=Inputfile[i][0]
        xx.append(x)
        y=Inputfile[i][1]
        yy.append(y)
        yyy=plt.plot(xx,yy)
        yyyy.append(yyy)
    ani=animation.ArtistAnimation(fig,yyyy,interval=1,repeat_delay=1)
    ani.save("test3.gif",writer='pillow')

    #cv2.imshow("test3.gif", ani)
    os.system(r"start test3.gif")

Python绘图表学习笔记 matplotlib绘图库

画轨迹图


            #将侧面杠铃中心点轨迹显示出来
            plt.figure()
            xx=[]
            yy=[]
            plt.ylim((min_row_pixal,max_row_pixal))
            plt.xlim((min_col_pixal-(max_col_pixal-min_col_pixal)//2,max_col_pixal+(max_col_pixal-min_col_pixal)//2))
            for i in range(left_bell_len):
                if left_bell_track[i][2]==min_row_pixal:
                    break
                x=max_col_pixal-left_bell_track[i][1]+min_col_pixal
                xx.append(x)
                y=max_row_pixal-left_bell_track[i][2]
                yy.append(y)
                plt.plot(xx,yy)
            plt.show()

效果如下:

Python绘图表学习笔记 matplotlib绘图库

python plot画点

参考:https://zhidao.baidu.com/question/490409794107932212.html

import matplotlib.pyplot as plt
plt.plot(x,y,'ro',label="point")
plt.legend()
plt.show()

动态画二维图

参考:https://blog.csdn.net/xyisv/article/details/80651334

import numpy as np
import matplotlib.pyplot as plt

plt.axis([0, 100, 0, 1])
plt.ion()

xs = [0, 0]
ys = [1, 1]

for i in range(100):
    y = np.random.random()
    xs[0] = xs[1]
    ys[0] = ys[1]
    xs[1] = i
    ys[1] = y
    plt.plot(xs, ys)
    plt.pause(0.1)

Python绘图表学习笔记 matplotlib绘图库

matplotlib如何绘制比例柱状图?

参考:https://www.zhihu.com/question/326181892/answer/695693441

Python绘图表学习笔记 matplotlib绘图库

import numpy as np
import matplotlib.pyplot as plt

people = ('1','2','3','4','5','6','7','8')
segments = 4

multi-dimensional data
data = np.asarray([[  3.40022085,   7.70632498,   6.4097905,   10.51648577,   7.5330039,
    7.1123587,   12.77792868,   3.44773477],
 [ 11.24811149,   5.03778215,   6.65808464,  12.32220677,   7.45964195,
    6.79685302,   7.24578743,   3.69371847],
 [  3.94253354,   4.74763549,  11.73529246,   4.6465543,   12.9952182,
    4.63832778,  11.16849999,   8.56883433],
 [  4.24409799,  12.71746612,  11.3772169,    9.00514257,  10.47084185,
   10.97567589,   3.98287652,   8.80552122]])

percentages = np.zeros((8, 4))
col_sum = np.sum(data, axis=0)
for i in range(data.shape[0]):
    for j in range(len(data[i])):
        percentages[j, i] = data[i, j] / col_sum[j] * 100

y_pos = np.arange(len(people))

fig = plt.figure(figsize=(10,8))
ax = fig.add_subplot(111)

colors ='rgbm'
patch_handles = []

bottom = np.zeros(len(people))
for i, d in enumerate(data):
    patch_handles.append(ax.bar(y_pos, d,
      color=colors[i%len(colors)], align='center',
      bottom=bottom))
    bottom += d

search all of the bar segments and annotate
for j in range(len(patch_handles)):
    for i, patch in enumerate(patch_handles[j].get_children()):
        bl = patch.get_xy()
        x = 0.5*patch.get_width() + bl[0]
        y = 0.5*patch.get_height() + bl[1]
        ax.text(x,y, "%d%%" % (percentages[i,j]), ha='center')

plt.show()

[ python可视化 ] 给图像添加文字说明

参考:https://blog.csdn.net/qq_27886807/article/details/80586368?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2aggregatepagefirst_rank_ecpm_v1~rank_v31_ecpm-1-80586368.pc_agg_new_rank&utm_term=plot+plt+%E6%96%87%E5%AD%97%E8%AF%B4%E6%98%8E&spm=1000.2123.3001.4430

len=np.array(len) #这是我的数据列表
a=mean(len) #以添加均值和方差注释为例
b=var(len)
plt.hist(len,15,facecolor='g')#画频率分布直方图
plt.ylabel('Frequency')
plt.text(.64, 7, r'$\mu$={:.4f}, $\sigma$={:.5f}'.format(a, b) )
#用pyplot下的text方法,前两个属性标注text添加的位置,比如我这里添加在右上方.

plt.title('Frequency Distribution Histogram')
plt.show()

Original: https://blog.csdn.net/qq_21237549/article/details/121797834
Author: 滚雪球~
Title: Python绘图表学习笔记 matplotlib绘图库

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/765180/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球