几个Matplotlib 画图的例子

几个Matplotlib 画图的例子

#例1 简单画图
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号


xpoints = np.arange(0,2*np.pi,1e-1)
ypoints = np.sin(xpoints)


plt.figure(dpi=100)
plt.scatter(xpoints, ypoints)
plt.xlim([0,2*np.pi])
plt.ylim([-1,1])
plt.xlabel('自变量')
plt.ylabel('函数值')
plt.title('正弦函数')

locs, labels = plt.xticks()
plt.xticks(locs,['第一','第二','第三','第四','第五','第六','第七','第八'],color='blue',rotation=20)



#例2 不规则子图
import numpy as np
import matplotlib.pyplot as plt

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

#定义好横纵坐标数据
x1 = np.linspace(0.0, 5.0)
x2 = np.linspace(0.0, 2.0)
y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
y2 = np.cos(2 * np.pi * x2)


plt.figure(dpi=200)

ax1=plt.subplot(1, 2, 1) 
ax1.plot(x1, y1, color='tab:blue')
ax1.plot(x2, y2, color='tab:orange')
                      
ax3=plt.subplot(2, 2, 2)                 
ax3.plot(x2, y2, color='tab:orange')    

ax2=plt.subplot(2, 2, 4)                
ax2.plot(x1, y1, color='tab:blue')



#例3
import matplotlib.pyplot as plt
import numpy as np

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

plt.figure(dpi=200,figsize=(6,6))
x, y = np.arange(-4, 5), np.arange(-4,5)
plt.xticks(x)
plt.yticks(y)
plt.xlabel("x_axis")
plt.ylabel("y_axis")
# 等高线的x、y坐标
X, Y = np.meshgrid(np.linspace(-4, 4, 50), np.linspace(-4, 4, 50))
# 等高线为一个圆
Z = X ** 2 + Y ** 3
# 画出高度为2、5、8、10的等高线
C = plt.contour(X, Y, Z, levels=[-3,-1,3, 5, 8, 12])
plt.clabel(C, inline=False, fontsize=15)
plt.show()

import numpy as np
import matplotlib.pyplot as plt
 
x = np.arange(-5,6,0.2)
y = np.arange(0,21,0.2)
xx,yy = np.meshgrid(x,y)

z = np.square(xx) - yy
plt.figure(dpi=200)
# plt.scatter(xx,yy,c=z,s=30,edgecolors='black',alpha=0.9)

plt.contourf(xx,yy,z,cmap='Blues')

plt.show()

#例4 来源于网络,如侵权,立刻删除
import matplotlib.pyplot as plt
import numpy as np

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


def two_bar(data1,data2,xticks):
    length = len(data1)
    x = np.arange(length)   # 横坐标范围

    plt.figure(dpi=200)
    total_width, n = 0.8, 2   # 柱状图总宽度,有几组数据
    width = total_width / n   # 单个柱状图的宽度
    x1 = x - width/2   # 第一组数据柱状图横坐标起始位置
    x2 = x + width/2   # 第二组数据柱状图横坐标起始位置

    plt.bar(x1, data1, width=width, label="小s吃糖数")
    plt.bar(x2, data2, width=width, label="小y吃糖数")
    
    
    for a, b in zip(x1, data1):
        plt.text(a, b + 0.1, '%.0f' % b, ha='center', va='bottom', fontsize=7)
    for a, b in zip(x2, data2):
        plt.text(a, b + 0.1, '%.0f' % b, ha='center', va='bottom', fontsize=7)

    # for a, b, c in zip(x1, data1,data1/(data1+data2)):
    #     plt.text(a, b + 0.1, '%.2f' % c, ha='center', va='bottom', fontsize=7)
    # for a, b, c in zip(x2, data2, data2/(data1+data2)):
    #     plt.text(a, b + 0.1, '%.2f' % c, ha='center', va='bottom', fontsize=7)

    plt.title("一周每天吃悠哈软糖颗数柱状图")   # 柱状图标题
    plt.xlabel("星期")   # 横坐标label 此处可以不添加
    plt.ylabel("吃悠哈软糖颗数(个)")   # 纵坐标label
    
    plt.xticks(x, xticks,rotation=0)   # 用星期几替换横坐标x的值
    plt.legend()   # 给出图例
    plt.show()


if __name__ == '__main__':
    data1 = np.array([5, 2, 1, 1, 8, 1, 6])   # 柱状图第一组数据
    data2 = np.array([9, 5, 1, 2, 9, 2, 1])   # 柱状图第二组数据
    xticks= ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"]
    two_bar(data1,data2,xticks)

#例5 双坐标
# -*- coding: utf-8 -*-
"""
Created on Sat Oct  1 17:06:57 2022

@author: Administrator
"""

import matplotlib.pyplot as plt
import numpy as np
 
plt.rcParams['font.sans-serif']=['KaiTi']#用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False#用来正常显示负号

def double_y_axis(data1,data2,xticks):
    x=list(range(len(data1)))
    fig, ax1 = plt.subplots(dpi=500)
    # 颜色代码: #7199cf,#4fc4aa
    bars=ax1.bar(x,data1, color='#7199cf',label="出货量")  
    ax1.set_xlabel("月份")
    ax1.set_ylabel("出货量(吨)")
    plt.xticks(x,xticks,rotation=45)
    colors=[ '#7199cf','#4fc4aa','#e1a7a2','#7199cf','#4fc4aa',
            '#e1a7a2','#7199cf','#4fc4aa','#e1a7a2','#7199cf','#4fc4aa','#e1a7a2']
    
    for bar, color in zip(bars, colors):  #给每个bar分配指定的颜色
        bar.set_color(color)
 
    ax2 = ax1.twinx()    #用于创建和返回共享x轴的第二个轴
    ax2.plot(data2, 'ro--',label="环比增长")
    ax2.set_ylabel("环比增长")
 
    fig.legend(loc="upper right")
    plt.show()
    
    
if __name__ == '__main__':

    data1=np.random.randint(100,1000,12)
    data2=[0]
    for i in range(1,len(data1)):
        data2.append((data1[i]-data1[i-1])/data1[i-1])
    xticks=["2019-01", "2019-02", "2019-03", "2019-04", "2019-05", "2019-06", 
            "2019-07", "2019-08", "2019-09", "2019-10", "2019-11", "2019-12"]
    double_y_axis(data1,data2,xticks)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值