python matplotlib绘图

目录

绘制带有中文标签和图例的正弦和余弦曲线

 绘制散点图

 修改散点符号与大小

 修改颜色 

 绘制饼状图

在图例中显示公式

多个图像单独显示

绘制有描边和填充效果的柱状图

 使用雷达图展示学生成绩

绘制三维曲面

设置图例样式


绘制带有中文标签和图例的正弦和余弦曲线

import numpy as np
import pylab as pl
import matplotlib.font_manager as fm

# 必须使用关键参数fname,必须保证字体文件路径正确
myfont = fm.FontProperties(fname=r'C:\Windows\Fonts\STKAITI.ttf') #设置字体
t = np.arange(0.0, 2.0*np.pi, 0.01)        # 自变量取值范围
s = np.sin(t)                              # 计算正弦函数值
z = np.cos(t)                              # 计算余弦函数值
pl.plot(t, s, label='正弦')
pl.plot(t, z, label='余弦')
pl.xlabel('x-变量', fontproperties='STKAITI', fontsize=18)        # 设置x标签
pl.ylabel('y-正弦余弦函数值', fontproperties='simhei', fontsize=18)
pl.title('sin-cos函数图像', fontproperties='STLITI', fontsize=24)  # 标题
pl.legend(prop=myfont)                     # 设置图例
pl.show()

 绘制散点图

>>> a = np.arange(0, 2.0*np.pi, 0.1)
>>> b = np.cos(a)
>>> pl.scatter(a,b)
>>> pl.show()

 修改散点符号与大小

>>> pl.scatter(a, b, s=20, marker='+')
>>> pl.show()

 修改颜色 

修改颜色
>>> import matplotlib.pylab as pl
>>> import numpy as np
>>> x = np.random.random(100)
>>> y = np.random.random(100)
>>> pl.scatter(x, y, s=x*500, c=u'r', marker=u'*')
# s指大小,c指颜色,marker指符号形状
>>> pl.show()

 绘制饼状图

import numpy as np
import matplotlib.pyplot as plt

#The slices will be ordered and plotted counter-clockwise.
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
colors = ['yellowgreen', 'gold', '#FF0000', 'lightcoral']
explode = (0, 0.1, 0, 0.1)              # 使饼状图中第2片和第4片裂开

fig = plt.figure()
ax = fig.gca()
ax.pie(np.random.random(4), explode=explode, labels=labels, colors=colors,
       autopct='%1.1f%%', shadow=True, startangle=90,
       radius=0.25, center=(0, 0), frame=True)   # autopct设置饼内百分比的格式
ax.pie(np.random.random(4), explode=explode, labels=labels, colors=colors,
       autopct='%1.1f%%', shadow=True, startangle=45,
       radius=0.25, center=(1, 1), frame=True)
ax.pie(np.random.random(4), explode=explode, labels=labels, colors=colors,
       autopct='%1.1f%%', shadow=True, startangle=90,
       radius=0.25, center=(0, 1), frame=True)
ax.pie(np.random.random(4), explode=explode, labels=labels, colors=colors,
       autopct='%1.2f%%', shadow=False, startangle=135,
       radius=0.35, center=(1, 0), frame=True)
ax.set_xticks([0, 1])                    # 设置坐标轴刻度
ax.set_yticks([0, 1])

ax.set_xticklabels(["Sunny", "Cloudy"])  # 设置坐标轴刻度上的标签
ax.set_yticklabels(["Dry", "Rainy"])

ax.set_xlim((-0.5, 1.5))                 # 设置坐标轴跨度
ax.set_ylim((-0.5, 1.5))

ax.set_aspect('equal')                   # 设置纵横比相等

plt.show()

 python使用matplotlib绘制饼状图_辰小夏的博客-CSDN博客_matplotlib饼状图

python 数据可视化———绘制饼状图(bar)_a1227406795的博客-CSDN博客_python饼状图

在图例中显示公式

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2*np.pi, 500)
y = np.sin(x)
z = np.cos(x*x)
plt.figure(figsize=(8,4))
# 标签前后加$将使用内嵌的LaTex引擎将其显示为公式
plt.plot(x,y,label='$sin(x)$',color='red',linewidth=2)   # 红色,2个像素宽
plt.plot(x,z,'b--',label='$cos(x^2)$')                   # 蓝色,虚线
plt.xlabel('Time(s)')
plt.ylabel('Volt')
plt.title('Sin and Cos figure using pyplot')
plt.ylim(-1.2,1.2)
plt.legend()                                              # 显示图例
plt.show()                                                # 显示绘图窗口

多个图像单独显示

import numpy as np
import matplotlib.pyplot as plt

x= np.linspace(0, 2*np.pi, 500)            # 创建自变量数组
y1 = np.sin(x)                             # 创建函数值数组
y2 = np.cos(x)
y3 = np.sin(x*x)
plt.figure(1)                              # 创建图形
ax1 = plt.subplot(2,2,1)                   # 第一行第一列图形
ax2 = plt.subplot(2,2,2)                   # 第一行第二列图形
ax3 = plt.subplot(212, facecolor='y')      # 第二行
plt.sca(ax1)                               # 选择ax1
plt.plot(x,y1,color='red')                 # 绘制红色曲线
plt.ylim(-1.2,1.2)                         # 限制y坐标轴范围
plt.sca(ax2)                               # 选择ax2
plt.plot(x,y2,'b--')                       # 绘制蓝色曲线
plt.ylim(-1.2,1.2)
plt.sca(ax3)                               # 选择ax3
plt.plot(x,y3,'g--')
plt.ylim(-1.2,1.2)
plt.show()

绘制有描边和填充效果的柱状图

import numpy as np
import matplotlib.pyplot as plt

#生成测试数据
x = np.linspace(0, 10, 11)
y = 11-x

#绘制柱状图
plt.bar(x, y,
        color='#772277',        #柱的颜色
        alpha=0.8,              #透明度
        edgecolor='blue',       #边框颜色
        linestyle='--',         #边框样式为虚线
        linewidth=1,            #边框线宽
        hatch='*')              #内部使用五角星填充

#为每个柱形添加文本标注
for xx, yy in zip(x,y):
    plt.text(xx-0.2, yy+0.1, '%2d' % yy)

#显示图形
plt.show()

 使用雷达图展示学生成绩

import numpy as np
import matplotlib.pyplot as plt

courses = ['C++', 'Python', '高数', '大学英语', '软件工程',
           '组成原理', '数字图像处理', '计算机图形学']
scores = [80, 95, 78, 85, 45, 65, 80, 60]
dataLength = len(scores)              # 数据长度

# angles数组把圆周等分为dataLength份
angles = np.linspace(0,               # 数组第一个数据
                     2*np.pi,         # 数组最后一个数据
                     dataLength,      # 数组中数据数量
                     endpoint=False)  # 不包含终点

scores.append(scores[0])
angles = np.append(angles, angles[0]) # 闭合

# 绘制雷达图
plt.polar(angles,             # 设置角度
          scores,             # 设置各角度上的数据
          'rv--',             # 设置颜色、线型和端点符号
          linewidth=2)        # 设置线宽

# 设置角度网格标签
plt.thetagrids(angles*180/np.pi,
               courses,
               fontproperties='simhei')

# 填充雷达图内部
plt.fill(angles,
         scores,
         facecolor='r',
         alpha=0.6)

plt.show()

报错的解决: 

Python绘制雷达图时遇到的坑的解决_Python-免费资源网

也可以加多一句

courses.append(courses[0])

 

 

绘制三维曲面

np.mgrid使用 - 码农教程

import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d

x,y = np.mgrid[-2:2:20j, -2:2:20j]        # 步长使用虚数
                                          # 虚部表示点的个数
                                          # 并且包含end
                                          
z = 50 * np.sin(x+y)                      # 测试数据
ax = plt.subplot(111, projection='3d')    # 三维图形
ax.plot_surface(x,y,z,rstride=2, cstride=1, cmap=plt.cm.Blues_r)
ax.set_xlabel('X')                        # 设置坐标轴标签
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.show()

import pylab as pl
import numpy as np
import mpl_toolkits.mplot3d
rho, theta = np.mgrid[0:1:40j, 0:2*np.pi:40j]
z = rho**2
x = rho*np.cos(theta)
y = rho*np.sin(theta)
ax = pl.subplot(111, projection='3d')
ax.plot_surface(x,y,z)
pl.show()

 

设置图例样式

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm

t = np.arange(0.0, 2*np.pi, 0.01)
s = np.sin(t)
z = np.cos(t)

plt.plot(t, s, label='正弦')
plt.plot(t, z, label='余弦')
plt.title('sin-cos函数图像',          #标题文本
           fontproperties='STLITI',  #标题字体
           fontsize=24)              #标题字号

myfont = fm.FontProperties(fname=r'C:\Windows\Fonts\STKAITI.ttf')
plt.legend(prop=myfont,               #图例字体
           title='Legend',            #图例标题
           loc='lower left',    #图例左下角位于图形(0.43,0.75)的位置
           bbox_to_anchor=(0.43,0.75),
           shadow=True,               #显示阴影
           facecolor='yellowgreen',   #图例背景色
           edgecolor='red',           #图例边框颜色
           ncol=2,                    #显示为两列
           markerfirst=False)         #图例文字在前,符号在后

plt.show()

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值