【python数据可视化】Matplotlib绘图练习(一)

news2025/2/12 18:57:25


目录

Matplotlib

🥇Summary

获取源码?私信?关注?点赞?收藏?


Python数据可视化的由来主要是因为数据可视化在数据分析领域扮演了至关重要的角色。这是因为,数据可视化能够更好地向人们展示大量数据,为人们快速发现数据中的规律和异常提供了更好的途径。Python是一种功能强大的编程语言,提供了丰富的数据处理和可视化工具,因此也成为了数据可视化的常用工具之一。随着Python社区的不断发展,一些功能强大且易于使用的数据可视化库如Matplotlib、Seaborn、Plotly等也逐渐涌现出来,并成为Python数据可视化的主流工具。

Python 的 2D绘图库

Matplotlib

Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。


import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 30)
#起始值,终止值,元素个数
plt.plot(x, np.sin(x));

plt.plot(x, np.sin(x), '-o');

# 颜色字符串有'c','m','y','r','g','b','w',和 k。分别表示青,红紫,黄,红,绿,白和黑。
# 线型字符串有:'-'为实线,'- -’为虚线,':'为点线,'-.'为点虚线,及'none’表示不用线型。
# 标记形式有'+','o','*',和'x',填入's'代表正方形,'d'代表菱形,'A'为上三角形,'v'为下三角形,’>’为右三角形,'<’为左三角形,'p’为五角星形,’h'为六角星形,none 为不用标记。

 

plt.plot(x, np.sin(x), 'r+');

plt.plot(x, np.sin(x), 'cd');

 

rng = np.random.RandomState(0)#rng(一个伪随机数生成器,即 np.random.RandomState() ),
x = rng.randn(100)
y = rng.randn(100)
colors = rng.rand(100)
sizes = 1000 * rng.rand(100)
plt.scatter(x, y, c=colors, s=sizes, alpha=0.3,
            cmap='viridis')
plt.colorbar(); # 展示色阶

 

x = np.linspace(0, 10, 50)
dy = 0.8
y = np.sin(x) + dy * np.random.randn(50)
plt.errorbar(x, y, yerr=dy, fmt='.k')

 

x = [1,2,3,4,5,6,7,8]
y = [3,1,4,5,8,9,7,2]
label=['A','B','C','D','E','F','G','H']
plt.bar(x,y,tick_label = label);#plt.bar()方法用来画柱状图

plt.barh(x,y,tick_label = label);

 

data = np.random.randn(1000)
plt.hist(data);

 

x1 = np.random.normal(0, 0.8, 1000)
x2 = np.random.normal(-2, 1, 1000)
x3 = np.random.normal(3, 2, 1000)
kwargs = dict(alpha=0.3, bins=40, density = True)
plt.hist(x1, **kwargs);
plt.hist(x2, **kwargs);
plt.hist(x3, **kwargs);

 

x = np.linspace(0,10,100)
plt.plot(x,np.sin(x),'--');

x = np.linspace(0,10,100)
plt.plot(x, np.sin(x))
plt.ylim(-1.5, 1.5);

 

x = np.linspace(0.05, 10, 100)
y = np.sin(x)
plt.plot(x, y, label='sin(x)')
plt.xlabel('variable x');
plt.ylabel('value y');

 

x = np.linspace(0.05, 10, 100)
y = np.sin(x)
plt.plot(x, y, label='sin(x)')
plt.title('Trigonometric function');

 

x = np.linspace(0.05, 10, 100)
y = np.sin(x)
plt.plot(x, y)
plt.grid()

 

x = np.linspace(0.05, 10, 100)
y = np.sin(x)
plt.plot(x, y)
plt.axhline(y=0.8, ls='--', c='r')

 

x = np.linspace(0.05, 10, 100)
y = np.sin(x)
plt.plot(x, y)
plt.text(3.2, 0, 'sin(x)', weight='bold', color='r');

 

x = np.linspace(0.05, 10, 100)
y = np.sin(x)
plt.plot(x, y)
plt.annotate('maximum',xy=(np.pi/2, 1),xytext=(np.pi/2+1, 1),
             weight='bold',
             color='r',
             arrowprops=dict(arrowstyle='->', connectionstyle='arc3', color='r'));

 

x = np.linspace(0, 10, 1000)
fig, ax = plt.subplots()
ax.plot(x, np.sin(x), label='sin')
ax.plot(x, np.cos(x), '--', label='cos')
ax.legend();

 

ax.legend(loc='upper left', frameon=False);
fig

 

ax1 = plt.axes()
ax2 = plt.axes([0.65, 0.65, 0.2, 0.2])

 

for i in range(1, 7):
    plt.subplot(2, 3, i)
    plt.text(0.5, 0.5, str((2, 3, i)),fontsize=18, ha='center')
# 方法二
# fig = plt.figure()
# fig.subplots_adjust(hspace=0.4, wspace=0.4)
# for i in range(1, 7):
#     ax = fig.add_subplot(2, 3, i)
#     ax.text(0.5, 0.5, str((2, 3, i)),fontsize=18, ha='center')

 

for i in range(2):
    for j in range(3):
        ax[i, j].text(0.5, 0.5, str((i, j)), fontsize=18, ha='center')
fig

 

grid = plt.GridSpec(2, 3, wspace=0.4, hspace=0.3)
plt.subplot(grid[0, 0])
plt.subplot(grid[0, 1:])
plt.subplot(grid[1, :2])
plt.subplot(grid[1, 2]);

 

from mpl_toolkits import mplot3d
fig = plt.figure()
ax = plt.axes(projection='3d')

 

ax = plt.axes(projection='3d')
# Data for a three-dimensional line
zline = np.linspace(0, 15, 1000)
xline = np.sin(zline)
yline = np.cos(zline)
ax.plot3D(xline, yline, zline);

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-10,10,50)#生成等差数列  从-10到10   一共50段
y1=2*x**3+7
y2=x**2+9
y3=x**3
y4=x**4+7
plt.figure(num=5,figsize=(8,5))#定义图像窗口大小
plt.plot(x,y2,color='pink',linewidth=1.0,linestyle='--')#3、画图
plt.plot(x,y1,color='blue',linewidth=2.0,linestyle='-')
plt.plot(x,y3,color='red',linewidth=3.0,linestyle='--')
plt.plot(x,y4,color='green',linewidth=4.0,linestyle='--')
#画四条曲线
plt.show()

 

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-3,3,50)#-3到3 分50段
y1=2*x+7
y2=x**2
plt.figure(num=5,figsize=(8,5))
plt.plot(x,y2)#默认样式
plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--')
# plt.xlim(-1,2)#4、定义坐标轴范围  (-1,2)
# plt.ylim(-2,3)
plt.xlabel('this is x')#横轴名称
plt.ylabel('this is y')
plt.show()

 

# 画出直线 y = x-1, 线型为虚线,线宽为1,纵坐标范围(-2,1),横坐标范围(-1,2),横纵坐标在(0,0)坐标点相交。
# 横坐标的 [-1,-0.5,1] 分别对应 [bad, normal, good]。
import matplotlib.pyplot as plt
import numpy as np
y1=x-1
plt.plot(x, y1, color='red', linewidth=1.0, linestyle='--')
plt.xlim((-1, 2))#4、定义坐标轴范围
plt.ylim((-1, 2))
plt.xticks([-1,-0.5,1],[ r'$bad$', r'$normal$', r'$good$'])
ax = plt.gca()
ax.spines['right'].set_color('none')#  边框颜色
ax.spines['top'].set_color('none')
# ax.xaxis.set_ticks_position('top')#  刻度位置
ax.spines['bottom'].set_position(('data', 0)) 
# ax.yaxis.set_ticks_position('right')#y轴  方向位置   右
ax.spines['left'].set_position(('data',0))#边框    轴位置
plt.show()

 

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = 'SimHei'
#中文字体
plt.figure(num=5,figsize=(10,6))
x = np.linspace(-10, 10, 20)
y=x-1
l1=plt.plot(x, y, color='red', linewidth=1.0, linestyle='--',label='Straight line')#图例
plt.xlim((-1, 2))
plt.ylim((-1, 2))
plt.xticks([-2,0,3],[ r'$bad$', r'$normal$', r'$good$'])
#xticks 6、定义坐标轴刻度及名称 
ax = plt.gca()
ax.spines['right'].set_color('none')#  边框颜色
ax.spines['top'].set_color('none')
# ax.xaxis.set_ticks_position('top')#  刻度位置 
ax.spines['bottom'].set_position(('data', 0)) 
# ax.yaxis.set_ticks_position('right')#y轴  方向位置   右
ax.spines['left'].set_position(('data',0))#边框    轴位置(0,0)相交
plt.legend(loc='upper left')#图例位置  位于左上方
plt.plot(x,y)

#标注
x0 = 2
y0 = x0-1
plt.plot([x0, x0,], [0, y0,], 'k--', linewidth=0.5)#(2,0)(2,2-1)
##'k--'为线型选项,绘制黑色虚线
#(2,2-1)位置
# set dot styles 
plt.scatter([x0, ], [y0, ], s=50, color='b')#圆的大小   颜色 点位置  s 大小  散点图
#plt.scatter 函数可以在图中画点,此时我们画的点为 (x0,y0), 点的大小(size)为 50, 点的颜色为蓝色(blue),可简写为 b。


#注释
plt.annotate(r'$x-1=%s$' % y0, xy=(x0, y0), xycoords='data', xytext=(+30, -30),
             textcoords='offset points', fontsize=12,
             arrowprops=dict(arrowstyle='->', connectionstyle="arc3,rad=.2"))
#添加注释annotate,对(x0, y0)这个点进行标注。第一种方式就是利用函数 annotate(),其中 r'2x+1=' %y0 代表标注的内容,
#可以通过字符串 %s 将 y0 的值传入字符串;参数xycoords='data' 是说基于数据的值来选位置, xytext=(+30, -30) 和 
#textcoords='offset points' 表示对于标注位置的描述 和 xy 偏差值,即标注位置是 xy 位置向右移动 30,向下移动30, (指示曲线弧度)
#arrowprops是对图中箭头类型和箭头弧度的设置,需要用 dict 形式传入。

#注释2
plt.text(-1.5, 1, r'$Our\ life\ will\ be\ both\ promissing\  and\ rosy. 特殊字符:\mu_n\ \sigma_i\ \alpha_t$',
         fontdict={'size': 12, 'color': 'r'})
# 上1.左1.5

 

import matplotlib.pyplot as plt
import numpy as np

n = 12
X = np.arange(n)#生成数组  默认0-11
Y1 = (1 - X / float(n)) * np.random.uniform(0.5, 3.0, n)#
Y2 = (1 - X / float(n)) * np.random.uniform(0.5, 1.0, n)

plt.bar(X, +Y1)#bar 函数  柱状图
plt.bar(X, -Y2)

plt.xlim(-.5, n)
plt.xticks(())
plt.ylim(-1.25, 1.25)
plt.yticks(())

plt.show()

 

plt.bar(X, +Y1, facecolor='#FFCCCC', edgecolor='white')# 前景色   边框颜色
plt.bar(X, -Y2, facecolor='#6699CC', edgecolor='white')

for x, y in zip(X, Y1):
    # ha: horizontal alignment
    # va: vertical alignment
    plt.text(x, y , '%.2f' % y, ha='center', va='bottom')

for x, y in zip(X, Y2):
    # ha: horizontal alignment
    # va: vertical alignment
    plt.text(x, -y , '%.2f' % y, ha='center', va='top')
#用%.2f保留两位小数,用ha='center'设置横向居中对齐,用va='bottom'设置纵向底部(顶部)对齐。
#如果想要改变柱状图的颜色,并且每个柱形上方能够显示该项数值我们可以用 plt.bar 函数中的facecolor参数设置柱状图主体颜色,
#用edgecolor参数设置边框颜色;而函数 plt.text 可以帮助我们在柱体上方(下方)加上数值:用%.2f保留两位小数,用ha='center'设置横向居中对齐,
#用va='bottom'设置纵向底部(顶部)对齐。

 

plt.contourf(X, Y, f(X, Y), 8, alpha=.75, cmap=plt.cm.RdBu)
C = plt.contour(X, Y, f(X, Y), 8, colors='black', linewidths=.5)
plt.clabel(C, inline=True, fontsize=10)
plt.text(0.7, 0, r'$\pi$',
         fontdict={'size': 30, 'color': 'r'})
plt.xticks(())
plt.yticks(())

 

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(19680801)#随机值生成器

# example data
mu = 100  # mean of distribution
sigma = 15  # standard deviation of distribution
x = mu + sigma * np.random.randn(437)

num_bins = 50

fig, ax = plt.subplots()

# the histogram of the data
n, bins, patches = ax.hist(x, num_bins, density=1)

# add a 'best fit' line
y = ((1 / (np.sqrt(2 * np.pi) * sigma)) *
     np.exp(-0.5 * (1 / sigma * (bins - mu))**2))
ax.plot(bins, y, '--')
ax.set_xlabel('Smarts')
ax.set_ylabel('Probability density')
ax.set_title(r'Histogram of IQ: $\mu=100$, $\sigma=15$')

# Tweak spacing to prevent clipping of ylabel
fig.tight_layout()
plt.show()
"""
直方图与柱状图外观表现很相似,用来展现连续型数据分布特征的统计图形(柱状图主要展现离散型数据分布)。

函数:matplotlib.pyplot.hist(x,bins=None,range=None, density=None, bottom=None, histtype='bar', align='mid', log=False, color=None, label=None, stacked=False, normed=None)

关键参数
x: 数据集,最终的直方图将对数据集进行统计
bins: 统计的区间分布
range: tuple, 显示的区间,range在没有给出bins时失效
density: bool,默认为false,显示的是频数统计结果,为True则显示频率统计结果,这里需要注意,频率统计结果=区间数目/(总数*区间宽度),和normed效果一致,官方推荐使用density
histtype: 可选{'bar', 'barstacked', 'step', 'stepfilled'}之一,默认为bar,推荐使用默认配置,step使用的是梯状,stepfilled则会对梯状内部进行填充,效果与bar类似
align: 可选{'left', 'mid', 'right'}之一,默认为'mid',控制柱状图的水平分布,left或者right,会有部分空白区域,推荐使用默认
log: bool,默认False,即y坐标轴是否选择指数刻度
stacked: bool,默认为False,是否为堆积状图
"""

 

# -*- coding:utf-8 -*-

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl

mpl.rcParams["font.sans-serif"] = ["KaiTi"]
mpl.rcParams["axes.unicode_minus"] = False

mu = 60.0
sigma = 2.0
x = mu + sigma*np.random.randn(500)

bins = 50

fig, ax = plt.subplots(1, 1)

n, bins, patches = ax.hist(x, bins, density=True, histtype="bar", facecolor="#99FF33", edgecolor="#00FF99", alpha=0.75)

y = ((1/(np.power(2*np.pi, 0.5)*sigma))*np.exp(-0.5*np.power((bins-mu)/sigma, 2)))

ax.plot(bins, y, color="#7744FF", ls="--", lw=2)

ax.grid(ls=":", lw=1, color="gray", alpha=0.2)

ax.text(54, 0.2, r"$y=\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(x-\mu)^2}{2\sigma^2}}$", {"color":"#FF5511", "fontsize":20})

ax.set_xlabel("体重")
ax.set_ylabel("概率密度")
ax.set_title(r"体重的直方图:$\mu=60.0$, $\sigma=2.0$", fontsize=16)

plt.show()

 

#patches模块中的各种形状
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.path as mpath
import matplotlib.lines as mlines
import matplotlib.patches as mpatches
from matplotlib.collections import PatchCollection
 
#定义函数,给每一个patch都设置标签说明
def label(xy, text):
    y = xy[1] - 0.15  # 标签放置在patch下方的0.15位置处
    plt.text(xy[0], y, text, ha="center", family='sans-serif', size=14)
 
 
fig, ax = plt.subplots()
# 创建一个3x3的网格
grid = np.mgrid[0.2:0.8:3j, 0.2:0.8:3j].reshape(2, -1).T
 
#创建容纳patch的集合
patches = []
 
# 添加一个圆Circle
circle = mpatches.Circle(grid[0], 0.1, ec="none")
patches.append(circle) 
label(grid[0], "Circle")
 
# 添加一个Rectangle
rect = mpatches.Rectangle(grid[1] - [0.025, 0.05], 0.05, 0.1, ec="none")
patches.append(rect)
label(grid[1], "Rectangle")
 
# 添加一个楔形,即圆的一部分
wedge = mpatches.Wedge(grid[2], 0.1, 30, 270, ec="none")
patches.append(wedge)
label(grid[2], "Wedge")
 
# 添加一多边形,这里添加一个五边形
polygon = mpatches.RegularPolygon(grid[3], 5, 0.1)
patches.append(polygon)
label(grid[3], "Polygon")
 
# 添加一个椭圆,也可以使用Arc
ellipse = mpatches.Ellipse(grid[4], 0.2, 0.1)
patches.append(ellipse)
label(grid[4], "Ellipse")
 
# 添加一个箭头
arrow = mpatches.Arrow(grid[5, 0] - 0.05, grid[5, 1] - 0.05, 0.1, 0.1,
                       width=0.1)
patches.append(arrow)
label(grid[5], "Arrow")
 
# 添加一个路径path,路径的详细解释后面会讲到,相比于简单的patch,稍显复杂
#自定义形状  自定义   !!!!
Path = mpath.Path
path_data = [
    (Path.MOVETO, [0, 0]),
    (Path.LINETO, [1, 0]),
    (Path.LINETO, [1, 1]),
    (Path.LINETO, [2, 1]),
    (Path.LINETO, [1.5, 2]),
    (Path.LINETO, [2, 2]),
    (Path.LINETO, [0.5, 3]),
    (Path.LINETO, [-1, 2]),
    (Path.LINETO, [-0.5, 2]),
    (Path.LINETO, [-1, 1]),
    (Path.LINETO, [0, 1]),
    (Path.CLOSEPOLY, [0, 0])]
codes, verts = zip(*path_data)
path = mpath.Path(verts + grid[6], codes)
patch = mpatches.PathPatch(path)
patches.append(patch)
label(grid[6], "PathPatch")
 
# 添加一个box
fancybox = mpatches.FancyBboxPatch(
    grid[7] - [0.025, 0.05], 0.05, 0.1,
    boxstyle=mpatches.BoxStyle("Round", pad=0.02))
patches.append(fancybox)
label(grid[7], "FancyBboxPatch")
 
# 添加一条折线——注意这里的折线和前面所画的这显示不一样的,这里的折线是一个形状
x, y = np.array([[-0.06, 0.0, 0.1], [0.05, -0.05, 0.05]])
line = mlines.Line2D(x + grid[8, 0], y + grid[8, 1], lw=5., alpha=0.3)
label(grid[8], "Line2D")
 
colors = np.linspace(0, 1, len(patches))
#将patch集合包装成PatchCollection
collection = PatchCollection(patches, cmap=plt.cm.hsv, alpha=0.3)
collection.set_array(np.array(colors))
#将PatchCollection添加给axes对象
ax.add_collection(collection) 
#将折线添加到axes对象
ax.add_line(line)
 
plt.axis('equal')
plt.axis('off')
plt.tight_layout()
 
plt.show()

 

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']#将图表内容字体设置为黑体,可以正常显示中文

ratios=[0.1,0.1,0.15,0.15,0.2]#存放比例列表
colors=['peru','coral','salmon','yellow','grey']#存放颜色列表,与比例相匹配
labels=["流行",'classic','pop','纯音乐','blue']#存放各类元素标签
explode=(0,0.1,0,0,0.08)

plt.pie(ratios,explode=explode,colors=colors,labels=labels)#绘制饼图
plt.title('歌单音乐种类百分比')
plt.axis('equal')#将饼图显示为正圆形
plt.show()

 

'''
使用plt.subplot2grid来创建第2个小图, (3,3)表示将整个图像窗口分成3行3列, (1,0)表示从第1行第0列开始作图,colspan=2表示列的跨度为2. 同上画出 ax3, 
(1,2)表示从第1行第2列开始作图,rowspan=2表示行的跨度为2. 再画一个 ax4 和 ax5, 使用默认 colspan, rowspan。使用ax4.scatter创建一个散点图, 
使用 ax4.setxlabel 和 ax4.setylabel 来对x轴和y轴命名。这样,我们就通过 subplot2grid() 完成了一张不均匀图中图。 细心的小伙伴可能可以注意到,
在第一章我们设置标题与坐标轴时,使用的是plt.title()这样的语句,针对小图 ax ,我们的设置前都要加上 'set'。
'''
plt.figure(figsize=(15, 15))
ax1 = plt.subplot2grid((5, 5), (0, 0), colspan=4)
ax1.plot([1, 2], [1, 3])    # 画小图
ax1.set_title('ax1_title')  # 设置小图的标题
ax2 = plt.subplot2grid((5, 5), (1, 0), colspan=2)
ax2.plot([0, 0], [1, 3],'green')    # 画小图
ax2.set_title('ax2_title')  # 设置小图的标题
ax3 = plt.subplot2grid((5, 5), (1, 2), rowspan=2)
ax3.plot([0, 0.8], [2, 6])    # 画小图
ax3.set_title('ax3_title')  # 设置小图的标题
ax4 = plt.subplot2grid((5, 5), (2, 0))
ax4.plot([3, 3], [2, 6],'black')    # 画小图
ax4.set_title('ax4_title')  # 设置小图的标题
ax5 = plt.subplot2grid((5, 5), (2, 1))
ax5.plot([1, 3], [-1, 6])    # 画小图
ax5.set_title('ax4_title')  # 设置小图的标题
ax5.scatter([1, 2], [2, 2],[3,6])
ax5.set_xlabel('ax4_x')
ax5.set_ylabel('ax4_y')
ax6 = plt.subplot2grid((5, 5), (3, 0))
ax6.plot([0, 5], [6, 1])    # 画小图
ax6.set_title('ax6_title')  # 设置小图的标题
ax7 = plt.subplot2grid((5, 5), (3, 1), colspan=2)
ax7.plot([0, 0.8], [2, 6],'red')    # 画小图
ax7.set_title('ax7_title')  # 设置小图的标题
ax8 = plt.subplot2grid((5, 5), (1, 3), rowspan=3)
ax8.plot([0, 0.8], [2, 6])    # 画小图
ax8.set_title('ax8_title')  # 设置小图的标题

 

#水果柱状图
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']  
###
raw_data = {'水果': ['香蕉', '苹果', '草莓'],
            '价格': [2,4,10],
            '数量': [5,3,6],}
df = pd.DataFrame(raw_data)

pos = list(range(len(df['水果']))) 
width = 0.25
plt.bar([p - width/2 for p in pos], df['价格'], width, color='#FFCCCC') 
plt.bar([p + width/2 for p in pos], df['数量'], width, color='#6699CC') 
plt.xticks(np.linspace(0, 2, 3),df['水果'])
plt.legend(['价格', '数量'], loc='upper left')

 

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5, 6, 7]
y = [1, 3, 4, 2, 5, 8, 6]
#小图
left, bottom, width, height = 0.1, 0.1, 0.8, 0.8#小图位置  
fig = plt.figure()
#大图
ax1 = fig.add_axes([left, bottom, width, height])
ax1.plot(x, y, 'r')
ax1.set_xlabel('x')
ax1.set_ylabel('y')
ax1.set_title('title')
#图中图
left, bottom, width, height = 0.2, 0.6, 0.25, 0.25
ax2 = fig.add_axes([left, bottom, width, height])
ax2.plot(y, x, 'b')
ax2.set_xlabel('x')
ax2.set_ylabel('y')
ax2.set_title('title inside 1')

 

import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
f, (ax11, ax12, ax13) = plt.subplots(1, 3, sharex=True, sharey=True)
#一行三列
x=np.linspace(-5,5,20)#等差数列
y1=x
y2=x**2
y3=0.01*x-0.01
ax11.plot(x,y2,color='pink',linewidth=2.0,linestyle='--')
ax11.set_xlabel('X data',color='g')
ax11.set_ylabel('Y data',color='g')
ax12.plot(x,y1,color='blue',linewidth=2.0,linestyle='--')
ax13.plot(x,y3,color='red',linewidth=2.0,linestyle='--')

plt.rcParams['font.sans-serif']=['SimHei']#将图表内容字体设置为黑体,可以正常显示中文
x = np.arange(-10, 10, 1)
y1 = x
y2 = x**2
y3 = 0.01 * x-0.01
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax3 = ax1.twinx()
ax1.plot(x, y1, 'g-')   # green, solid line
ax1.set_xlabel('X data')
ax1.set_ylabel('Y1 data', color='g')
ax2.plot(x, y2, 'b-') # blue
ax2.set_ylabel('Y2 data', color='b')
ax3.plot(x, y3, 'r-') # blue
ax3.set_ylabel('Y3 data', color='r')

 

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']#将图表内容字体设置为黑体,可以正常显示中文
y1 = x
y2 = x**2
y3 = 0.01 * x-0.01
#大图
left, bottom, width, height = 0.1, 0.1, 0.8, 0.8
fig = plt.figure()

ax1 = fig.add_axes([left, bottom, width, height])
ax1.plot(x, y1, 'r')
ax1.set_xlabel('x')
ax1.set_ylabel('y')
ax1.set_title('title')

left, bottom, width, height = 0.2, 0.6, 0.25, 0.25
#小图位置   图框宽度高度
ax2 = fig.add_axes([left, bottom, width, height])
ax2.plot(x, y2, 'b')
ax2.set_xlabel('x')
ax2.set_ylabel('y')
ax2.set_title('title inside 1')

left, bottom, width, height = 0.6, 0.2, 0.25, 0.4
#小图位置   图框宽度高度
ax2 = fig.add_axes([left, bottom, width, height])
ax2.plot(x, y3, 'b')
ax2.set_xlabel('x')
ax2.set_ylabel('y')
ax2.set_title('title inside 1')
#一个大图,中包含两个小图


🥇Summary

上述内容就是此次 【python数据可视化】Matplotlib绘图练习(一) 的全部内容了,感谢大家的支持,相信在很多方面存在着不足乃至错误,希望可以得到大家的指正。🙇‍(ง •_•)ง

调整自己。不忘来时路,努力前行,找到前进的方向。

2023年第四十一期,希望得到大家的喜欢🙇‍

希望大家有好的意见或者建议,欢迎私信,一起加油


以上就是本篇文章的全部内容了

 ~ 关注我,点赞博文~ 每天带你涨知识!

1.看到这里了就 [点赞+好评+收藏] 三连 支持下吧,你的「点赞,好评,收藏」是我创作的动力。

2.关注我 ~ 每天带你学习 :各种前端插件、3D炫酷效果、图片展示、文字效果、以及整站模板 、HTML模板 、C++、数据结构、Python程序设计、Java程序设计、爬虫等! 「在这里有好多 开发者,一起探讨 前端 开发 知识,互相学习」!

3.以上内容技术相关问题可以相互学习,可 关 注 ↓公 Z 号 获取更多源码 !
 

获取源码?私信?关注?点赞?收藏?

👍+✏️+⭐️+🙇‍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/639757.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电脑老是自动更新怎么办?教你一招彻底解决

前言 这两天有粉丝留言问我&#xff1a;电脑老是提示自动更新&#xff0c;而且关也关不掉&#xff0c;这该怎么办&#xff1f; 今天就教大家如何彻底关掉电脑的系统自动更新功能&#xff0c;以后永远不再自动更新。 一、关闭更新服务 1. 同时按下键盘winR键&#xff0c;打开运…

SQL 知识你知道吗:公共表表达式(CTE)

一、概念 公共表表达式&#xff08;CTE&#xff09;是一种临时命名查询结果集的方式&#xff0c;可以在一个查询语句中多次引用。CTE在查询语句中定义&#xff0c;可以在查询语句中的任何位置使用&#xff0c;并且只在查询语句执行期间存在。CTE通常用于简化复杂的查询&#x…

1个暑假能学会多少网络安全技能?

现在可以看到很多标题都声称三个月内就可以转行网络安全领域&#xff0c;并且成为月入15K的网络工程师。那么&#xff0c;这个暑假的时间能学多少网络安全知识&#xff1f;是否能入门网络安全工程师呢&#xff1f; 答案是肯定的。 虽然网络完全知识是一门广泛的学科&#xff…

微信授权登录

网站应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统。 在进行微信OAuth2.0授权登录接入之前&#xff0c;在微信开放平台注册开发者帐号&#xff0c;并拥有一个已审核通过的网站应用&#xff0c;并获得相应的AppID和AppSecret&#xff0c;申请微信登录且通过…

ConcurrentHashMap简单了解

早期ConcurrentHashMap&#xff1a; 通过分段锁Segment实现&#xff0c;将锁一段一段存储&#xff0c;默认会分配16个segment&#xff0c;当一个线程占用一把锁segment访问其中一段数据的时候&#xff0c;位于其它segment的数据也能被其它线程同时访问&#xff0c;每个segment分…

面板安全能力持续增强,新增日志审计功能,1Panel开源面板v1.3.0发布

2023年6月12日&#xff0c;现代化、开源的Linux服务器运维管理面板1Panel正式发布v1.3.0版本。 在这一版本中&#xff0c;1Panel进一步增强了安全方面的能力&#xff0c;包括新增SSH配置管理、域名绑定和IP授权支持&#xff0c;以及启用网站防盗链功能。此外&#xff0c;该版本…

【C#】并行编程实战:序章

前言 本文主要是基于这本书学习的&#xff1a; 《并行编程实战&#xff1a;基于C#8和.NET Core 3》&#xff0c;我当时买的实体书&#xff0c;长下面这个样子。我买了大概浏览了一下&#xff0c;感觉内容还行&#xff08;基本都是没见过的新东西&#xff09;&#xff0c;所以打…

计算机提示由于找不到VCRUNTIME140.dll,无法继续执行代码,重新安装程序可能会解决

vcruntime140.dll文件是一个动态链接库&#xff0c;是Windows操作系统中非常重要的一个动态链接库文件&#xff0c;用于支持使用Microsoft Visual C编译器创建的应用程序的运行。当我们运行的软件是有C编译器创建的程序&#xff0c;就需要到系统的vcruntime140.dll&#xff0c;…

数学模型:Python实现微分方程

文章摘要&#xff1a;微分方程的Python实现。 参考书籍&#xff1a;数学建模算法与应用(第3版)司守奎 孙玺菁。 PS1&#xff1a;只涉及了具体实现并不涉及底层理论。没有给出底层理论参考书籍的原因是不想做这个方向吧。所以对我只要掌握基本模型有个概念那就好了。 PS2&#x…

年度创新企业奖!移远通信成推动AIoT融合落地关键力量

6月8日&#xff0c;由ASPENCORE主办的2023国际AIoT生态发展大会在深圳召开&#xff0c;移远通信受邀出席大会并发表演讲&#xff0c;同时凭借在5G、AIoT等领域的持续创新荣获“年度创新企业”奖&#xff01; 5GAIoT“双引擎” 重塑物联产业 近些年&#xff0c;从互联网、物联网…

汽车仪表中控开发中视频相关的一些知识点

前言: 做汽车仪表/IVI中控,尤其是IVI信息娱乐部分,都要涉及到视频这个知识点,各种概念很多,首先需要明确一条主线,那就是SDTV标清电视->HDTV高清电视->UHDTV超高清电视的一个发展脉络,BT601/656是SDTV标清电视接口,BT1120则对应HDTV高清电视接口。ITU-R BT.601/6…

2022 年全国硕士研究生入学统一考试管理类专业学位联考逻辑试题

2022 年全国硕士研究生入学统一考试管理类专业学位联考逻辑试题 一. 逻辑推理&#xff1a;第 26~55 小题&#xff0c;每小题 2 分&#xff0c;共 60 分。下列每题给出的 A、B、C、D、E 五个选项中&#xff0c;只有一项是符合试题要求的。 26.百年党史充分揭示了中国共产党为什么…

Qemu 逃逸基础知识

QEMU 与 KVM 架构 QEMU 与 KVM 的完整架构如下图所示。 QEMU 与 KVM 架构整体上分为 3 个部分&#xff1a; VMX root 模式的应用层&#xff0c;即图中左上部分&#xff0c;属于 qemu 进程。VMX root 模式的内核层&#xff0c;即图中下半部分&#xff0c;属于 kvm 驱动。VMX …

吴恩达471机器学习入门课程2第1周——手写数字识别(0和1)

用于手写数字识别的神经网络&#xff08;0和1&#xff09; 问题描述1.导入模块2. 数据集2.1 数据可视化 3 模型展示 使用神经网络来识别手写数字 0 和 1。 问题描述 在这个练习中&#xff0c;您将使用神经网络来识别手写数字“0”和“1”。这是一个二元分类任务。 自动手写数…

20JS11——JS对象

文章目录 一、对象二、创建对象的三种方式1、利用字面量创建对象1.1 使用对象1.2 变量、属性、函数、方法总结2、利用new Object创建对象3、利用构造函数创建对象&#xff08;1&#xff09;为什么使用构造函数&#xff1f;&#xff08;2&#xff09;利用构造函数创建对象&#…

Java8日期时间类LocalDateTime格式化

LocalDateTime日期时间格式化 LocalDateTime localDateTime LocalDateTime.now() System.out.println(now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")测…

000网络常见的资源推荐

博客 分类: 图解网络 | 小白debug有时骚话连篇&#xff0c;有时硬核图解https://xiaobaidebug.top/categories/%E5%9B%BE%E8%A7%A3%E7%BD%91%E7%BB%9C/网络攻击常见手段总结 | JavaGuide(Java面试 学习指南)本文整理完善自TCP/IP 常见攻击手段 - 暖蓝笔记 - 2021这篇文章。 这…

window下安装docker并运行angular项目

window下安装docker并运行angular项目 1、使用场景 本地有一个node项目&#xff0c;node 版本是 v16.13.2&#xff0c;在本地安装的angular 是 15.2.4 但是测试服上面的node 版本是 14.19.3&#xff0c;angular 是1.0.0-beta.28.3 &#xff0c;会导致angular项目的 ng build …

吴恩达471机器学习入门课程1第3周——逻辑回归

文章目录 Logistic Regression1、导包2、逻辑回归2.1、问题描述2.2、加载数据集数据可视化 2.3、sigmod function2.4 逻辑回归的代价函数2.5 逻辑回归的梯度2.6 使用梯度下降学习参数 测试可视化2.8 评估逻辑回归 3、 正则化逻辑回归3.1 问题陈述3.2 加载和可视化数据3.3 特征映…

大模型部署实战(二)——Ziya-BLIP2-14B-Visual

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…