★ Python 使用Matplotlib库绘制点图、折线图、条状图与饼图

版权声明:转载请注明出处 https://blog.csdn.net/qq_42292831/article/details/83277165

★使用Python第三方库matplotlib2D绘图库)绘制常见的:

  • 点图
  • 折线图
  • 条状图
  • 饼图

引入:

常用的颜色c="???":

            1:红色‘red’

            2:蓝色‘blue’/‘b’

            3:黄色‘yellow’

            4:绿色‘green’

            5:橙色‘orange’

            6:浅蓝色‘c’

常见的参数:

            plt.xlabel("Line")    #行标签

            plt.ylabel("Column")    #列标签

            plt.title("Chart")    #标题(中文会乱码)

            plt.xlim(0,10)    #行的取值范围

            plt.ylim(0,100)    #列的取值范围

            plt.margins(0)    #边缘举例大小

然后将会详细介绍怎么去使用函数绘制绘制以及绘制相应某种图形的时候函数所使用的主要参数与属性参数,

上面的引入部分也会在下方的介绍中使用,可以结合实例进行分析理解,讲解不可能包含所有参数,

只是挑出比较常见的进行分析,当学会了基本的可以再在已有的基础上进行进一步拓展。

最后会讲解如何保存上述绘制的图片。

****************************************************************************************************************************************

*绘图所使用模块的调用与其重命名 (下方有引用

)

import matplotlib.pyplot as plt
import numpy as np

一:点图(plt.scatter(x,y))

*scatter v.撒 n.零星分散的东西

x = np.arange(1,10)      #必须从1开始,而且间隔为1
y = x
plt.scatter(x,y,c='y',marker='x')

# 之所以这里写两个是为了更好的体现出marker参数的含义
# marker参数是用相应的字符对图中出现的点进行标记

plt.scatter(x,y,c='g',marker='*')

效果展示:

注意事项与常用+关键参数解释:

1:一般在写代码的过程中会遇到换行的问题,但是直接按回车就会直接执行该条语句,那么怎么换行呢?

      -> 在一行的末尾使用空格+右斜线,再回车就将直接转到下一行,但是有些时候这个末尾的空格+右斜线会导致运行错误,

      -> 所以在换行后可以使用鼠标或指针的上下左右定位到上一行末尾将那个斜线删除就好了

2:这个函数主要有两个主要参数x、y,只要这两个参数存在,那么该函数就能够正确绘图,其余参数直接取默认值;

3:第三个参数c='g' --->>>这里的c是color(颜色,不是colour~),g表示的是green(绿色),当然也可以写成:color='green'(单引号也可以换成双引号),都能够正常运行,为了方便起见就写成上述的样子了(前后都取首字母),我在文章开头的引入中介绍了不同的可以使用的颜色,可以动手尝试相应效果。

4:第四个参数marker在上述代码框中已经解释过。

5:是不是觉得怎么就两个属性参数?当然不是,我也在文章开头提到了常见的参数,看完了这个部分的第一点后就可以直接将其用在绘制这个图上面了。

二:折线图(plt.plot(x,y))

*plot n.点

*linewidth n.线的宽度

x = np.array([1,2,3,4,5,6,7,8])     #必须从1开始,而且间隔为1

# 这里你可能会疑问?np.array([])是什么?
# 这个也就是另一种数据存储结构,如果不理解可以使用熟悉的元组或列表类型即可
# 元组表示:x = (1,2,3,4,5,6,7,8)
# 列表表示:x = [1,2,3,4,5,6,7,8]

y = np.array([3,5,7,6,2,6,10,15])
plt.plot(x,y,linewidth=3)    #这里也只有两个主要参数来支撑折线图的绘制

效果展示:

注意事项与常用+关键参数解释:

1:语法plt.plot(x,y) 关键参数有两个

2:linewidth线的粗细

3:颜色与上面一致(没体现在图中)

三:条状图(plt.bar())

*bar n.条状物、栅栏

x = np.array([1,2,3,4,5,6,7,8])    #必须从1开始,而且间隔为1
y = np.array([13,25,17,36,21,16,10,15])

# alpha是透明度(0~1->1表示不透明) ,b是蓝色,c是浅蓝色
# 0.2是每一条的宽度

plt.bar(x,y,0.2,alpha=1,color='b') 

效果展示:

注意事项与常用+关键参数解释:

1:x、y的定义方式不止np.array一种,元组/列表均可

2:x定义的时候必须从一开始而且连续

3:绘制条状图语法plt.bar(x,y,…) x,y是关键参数,后面的一些参数仅仅起到修饰该条状图的作用

4:color颜色

5:整型数据 在x,y后面直接接着一个整型参数直接决定条状图形的宽度(条条之间的间隔,以0.5为基准)

6:alpha透明度【计算机专业专有含义】(1为不透明,小于1为不透明度的大小)

 

四:饼图(plt.pie())

* pie n.派

* explode v.爆炸

labels = 'Frogs','Hogs','Dogs','Logs'
sizes = [15,30,45,10]
explode = (0,0.1,0,0) 
#0.1表示将Hogs那一块凸显出来(explode原意为爆炸)

plt.pie(sizes, explode,labels,autopct='%1.1f%%',radius=1,shadow=False,startangle=90)
#autopct自动百分比(percent)

效果展示:

->饼图的8个常用参数(包括3个关键参数):

1:sizes每一个区域的值(输入所有的值后自动按比例确认各自所占的比例)

2:explode是否需要突出某部分(基础值为0)

3:labels分类的标签

4:* 注意前三个的数量要一致,而且必须按照上述的顺序进行排列,后面的参数可以不论顺序

5:radius半径(基准为1)

6:autopct’%1.1f%%’ 饼图上是否显示数据信息(百分比)

7:shadow是否有阴影(True/False注意大小写)

8:startangle起始绘制角度(逆时针以第一个标签开始旋转绘制相应的扇形区域)

五:绘制图形的保存

由于我日常写代码使用的是jupyter qtconsole,所以没有使用到plt.show(),就基于不使用plt.show()的情况说明如何保存:

在打印图片的语句之后使用plt.savefig(“F:/xxx.png/.jpg”),也可以省略后缀,默认保存为.png格式图片,

举个例子:

plt.pie(sizes,explode,labels,autopct="%1.2f%%",shadow=True,startangle=90) 

# fig = plt.gcf()    测试的时候使用

plt.savefig("f:/aaa.png")

Bingo~成功保存,测试没有出现保存成空白图片的情况。

*六:附加

1:用到了我在文章开头的参数了吗?

      有了那些参数可以给图形加上一些修饰(x、y轴标题,限制x、y轴取值来改变图像所处的位置等等~);

2:上面提到的所有参数大部分是通用的,例如饼图中的透明度alpha参数也可以用到条状图中;

3:参数都是预先定义的不免有些麻烦,这就不免令我们想到是不是可以通过手动输入参数呢?

      那么如何使用input()输入参数呢?可是input()输入的是字符串而且还会有空格

      那么就自己编写一个demo_function来对input()函数的输入进行转换吧~

      相应函数--->>传送门(点我即达~)

****************************************************************************************************************************************

             最快的脚步不是跨越,而是继续,最慢的步伐不是小步,而是徘徊。
 

****************************************************************************************************************************************

猜你喜欢

转载自blog.csdn.net/qq_42292831/article/details/83277165