欢迎访问 生活随笔!

凯发k8官方网

当前位置: 凯发k8官方网 > 编程语言 > >内容正文

python

python中利用matplotlib画图 -凯发k8官方网

发布时间:2025/1/21 16 豆豆
凯发k8官方网 收集整理的这篇文章主要介绍了 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

介绍三种比较简单的方法

  • 基于matplotlib的画图方式
    plt.plot(),常用款
    plt.hist(), 画直方图
    plt.pie(),画饼状图
    plt.figure()
  • 基于pandas的画图
    s.plot() s是pandas的series对象
    df.plot() df是pandas的dataframe对象

1.1. plt.plot()#绘制y关于x的变化关系.
x,y是成对出现的。可以省略x,则y是关于y的个数的函数关系。
当y是series或dataframe对象对象时,不出现x
[fmt]]可以设置线性,颜色,样式等。

plot y versus x as lines and/or markers
plot([x], y, [fmt], data=none, **kwargs)
plot([x], y, [fmt], [x2], y2, [fmt2], …, **kwargs)

以一个比较简单的例子入手:

import numpy as np from matplotlib import pyplot as plt %matplotlib inlinex = np.arange(-10,11) y = x**2 plt.plot(x,y)
  • 增加一些功能
    设置标题、坐标轴标签、轴边界、轴刻度、显示中文及正负号
import numpy as np from matplotlib import pyplot as plt %matplotlib inlinex = np.arange(-10,11) y = x**2 plt.plot(x,y)#添加标题 plt.title('二次函数') #设置x,y轴标签 plt.xlabel('x') plt.ylabel('y') #设置x,y轴边界 plt.xlim([-12,12]) plt.ylim([-10,110]) #设置x,y轴刻度 plt.xticks([i for i in range(-10,11)]) plt.yticks([i for i in range(-10,101,10)])plt.rcparams['font.sans-serif']=['simhei'] #显示中文 plt.rcparams['axes.unicode_minus']=false #用来正常显示负号
  • 增加图例
    配合plot()中的label参数,设置图例。loc设置图例的位置。color设置颜色,linestyle设置颜色,marker设置有值处点的形状。
x = np.arange(-10,11) y = x**2plt.plot(x,y,label='y=x^2',color = 'r',linestyle = ':',marker = 'o') plt.legend(loc = 'upper right')
  • plt.plot()的参数是series对象
  • plt.plot()的参数是dataframe对象。dataframe对象画图时,使用df.plot()更好,图例显示的就是列名。

    1.2 plt.hist()画直方图
    1.3. plt.pie()画饼状图
  • 基于pandas
    2.1 s.plot()
  • s = pd.series(np.random.randn(50).cumsum()) s.plot(linestyle = '-.', marker = '_')


    2.2 df.plot()
    通过df.plot(kind='line')画图,其中的kind参数可取‘line’,‘bar’,‘kde’(密度图),‘hist’,‘area’(面积图)等。返回对象axes

    # 图名,图例,轴标签,轴边界,轴刻度,轴刻度标签等df = pd.dataframe(np.random.rand(10,2),columns=['a','b']) fig = df.plot(figsize=(6,4)) # figsize:创建图表窗口,设置窗口大小 # 创建图表对象,并赋值与figplt.title('interesting graph - check it out') # 图名 plt.xlabel('plot number') # x轴标签 plt.ylabel('important var') # y轴标签plt.legend(loc = 'best') plt.xlim([0,12]) # x轴边界 plt.ylim([0,1.5]) # y轴边界 plt.xticks(range(11)) # 设置x刻度 plt.yticks([0,0.2,0.4,0.6,0.8,1.0,1.2]) # 设置y刻度 # fig.set_xticklabels("%.1f" %i for i in range(10)) # x轴刻度标签 # 周刻度另命名 fig.set_xticklabels("%c" %i for i in list('abcdegfhij')) # x轴刻度标签 fig.set_yticklabels("%.2f" %i for i in [0,0.2,0.4,0.6,0.8,1.0,1.2]) # y轴刻度标签
    • 保存图像plt.savefig('a.png')
  • 创建子图
    3.1 子图创建1 - 先建立子图然后填充图表
    在子图中添加标题
    ax1.title.set_text('first plot')
  • # 子图创建1 - 先建立子图然后填充图表fig = plt.figure(figsize=(10,6),facecolor = 'gray')ax1 = fig.add_subplot(2,2,1) # 第一行的左图 ax1.plot(np.random.rand(50).cumsum(),'r--') ax1.plot(np.random.randn(50).cumsum(),'b--') ax1.title.set_text('cumsum -- line')ax2 = fig.add_subplot(2,2,2) # 第一行的右图 ax2.hist(np.random.rand(50),alpha=0.5) ax2.title.set_text('hist')ax4 = fig.add_subplot(2,2,4) # 第二行的右图 df2 = pd.dataframe(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd']) ax4.plot(df2,alpha=0.5,linestyle='--',marker='.') ax2.title.set_text('mess') plt.show() # 也可以直接在子图后用图表创建函数直接生成图表

    3.2 创建一个新的figure,并返回一个subplot对象的numpy数组 → plt.subplot

    # 子图创建2 - 创建一个新的figure,并返回一个subplot对象的numpy数组 → plt.subplotfig,axes = plt.subplots(2,3,figsize=(10,4)) ts = pd.series(np.random.randn(1000).cumsum()) ts2 = pd.series(np.random.randint(100,size=100)) print(axes, axes.shape, type(axes)) # 生成图表对象的数组ax1 = axes[0,1] ax1.plot(ts) ax2 = axes[0,2] ax2.plot(ts2)


    参数调整

    # plt.subplots,参数调整 fig, axis = plt.subplots(4,4,figsize=(12,10))# 设置子图是4*4,图大小的12*10 fig.suptitle('histogram')# 添加总标题 # sharex=true,sharey=true。sharex,sharey:是否共享x,y刻度 for i in range(4):for j in range(4):num = i*4j1axis[i][j].hist(df_x['f'str(num)])# 画出f1~f13axis[i][j].set_title('f%d' % num)# 设置子图的标题if num>=13:break plt.subplots_adjust(wspace=0.3,hspace=0.3) # wspace,hspace:用于控制宽度和高度的百分比,比如subplot之间的间距

    colorbar配合inshow使用

    import numpy as np from matplotlib import pyplot as plt m = np.linspace(-100,100,50) n = np.linspace(-100,100,50) x,y = np.meshgrid(m,n) z = x**2 y**2plt.imshow(z,cmap='spring') plt.colorbar(shrink=0.8)# 颜色条占图高的比例 plt.show()

    总结

    以上是凯发k8官方网为你收集整理的的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得凯发k8官方网网站内容还不错,欢迎将凯发k8官方网推荐给好友。

    • 上一篇:
    • 下一篇:
    网站地图