关于如何使用Python绘制基本数据图形模型

关于如何使用Python绘制基本数据图形模型

通过之前的数据分析软件的学习,了解了数据清洗、处理后最好是输出图形,以方便后期的数据分析报告的输出。之前学习的方法是通过是SPSS软件然后进行数据整理归类后自动生成或者相关生成对应的图形,然后今天老师教的是如何通过编码的方式从Python软件中制作图形。相比如之前的方法,Python制图可能会需要对基本数据的含义和输出数据表格的指向性更加的了解,所有的数据图形模型的框架都是通过编码的形式自己绘制。对于复杂的数据图形的绘制应该会难度增加很多!

几个基本数据图形模型的编码模板

折线图的绘制

import random   random函数忘了是什么含义, 查了一下博客园一个叫Python终结者的博客,random函数是生成一个随机数值的函数。(学习一下怎么在博客中插入图片,怎么解析出截图的图片URL??)问一下这里为什么导入random函数??

import matplotlib as mpl

import matplotlib.pyplot as plt    以上两句编程语言为Python绘图的模块导入语,基本上要通过Python绘图,首先就直接po这两句上去!

mpl.rcParams['font.sans-serif'] = ['FangSong']

mpl.rcParams['font.size'] = 8    以上两句编程语言为Python绘图的字体显示和调整模块导入语,基本上要通过Python绘图,其次就直接po这两句上去!

y = []

y.append(random.randint(20,35))

y = [random.randint(20,35) for i in range(120)]

x = list(range(120))    Python绘图首先需要对变量进行定义和赋值,这里开始就有别于其他表格式软件绘图。因为不同于其他表格式绘图软件,可以在选择图形后更改X或者Y的赋                                      值,可能Python更改起来比较麻烦,所以前期的数据处理对于图形分析目标效果的确定和X、Y轴的赋值需要比较清楚明白。

fig = plt.figure(figsize=(20,8))    这一句是表格布局画板,也是直接po上去!

plt.plot(x,y)

xables = ['10点{}分'.format(i) for i in range(60)]

xables + = ['11点{}分'.format(i) for i in range(60)]

plt.xtick(x[::3],xables[::3],rotation=45)

plt.yticks(y)    以上是对表格X轴和Y轴进行赋值、数据调整、布局调整等步骤。其中可以完成以下相关的处理:1、赋值;2、数据分割;3、X轴和Y轴的数字用中文代替;4、调整中                        文显示的角度;....

plt.xlabel('时间', color = 'red',fontdict = {'fontsize':40})

plt.ylabel('温度',color = red,fontdict = {'fontsize':40})

plt.title('某日10点到12点的温度变化趋势图')      以上是对表格X轴、Y轴和表格标题赋中文注解,以及调整文字属性:1、文字内容;2、字体大小;3、字体颜色;....

plt.grid(alpha = 0.5)       这是对表格进行背景网格设置,为了能清楚看到X轴和Y轴的对应取值

plt.show()

这是一个完整的折线图的编码流程,其实发现模块套用度还是挺高的,就是数据处理的时候,可能需要自己添加一些函数或者其他的编程语言处理,这个可能以后需要着重积累经验的地方!

多元折线图的绘制

import matplotlib.pyplot as plt

import matplotlib as mpl

mpl.rcParams['font.sans-serif'] = ['FangSong'] 

mpl.rcParams['font.size'] = 16 

x = range(11,31)

y_self = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]

y_mate = [1,0,3,1,2,2,3,3,2,1,2,1,1,1,1,1,1,1,1,1]

fig = plt.figure(figsize=(20,8))

plt.plot(x, y_self, label='同桌', color='black', linestyle= '-')

plt.plot(x, y_mate, label='自己')

x_lables = ['{}岁'.format(i) for i in x]

plt.xticks(x, x_lables)

plt.xlabel('年龄')

plt.ylabel('女朋友个数')

plt.title('交女朋友个数对比')

plt.legend()

plt.grid(alpha=0.5)

plt.show()

散点图的绘制

import matplotlib as mpl

import matplotlib.pyplot as plt

mpl.rcParams['font.sans-serif'] = ['FangSong'] 

mpl.rcParams['font.size'] = 16 

x_3 = list(range(1,32))

y_3 = [10, 16, 17, 14, 12, 10, 12, 6, 6, 7, 8, 9, 12, 15, 15, 17, 18, 21, 16, 16, 20, 13, 15, 15, 15, 18, 20, 22, 22, 22, 24]

x_10 = [i+50 for i in x_3]

y_10 = [26, 26, 28, 19, 21, 17, 16, 19, 18, 20, 20, 19, 22, 23, 17, 20, 21, 20, 22, 15, 11, 15, 5, 13, 17, 10, 11, 13, 12, 13, 6]

fig = plt.figure(figsize=(20,8))

plt.scatter(x_3,y_3,label='三月份')

plt.scatter(x_10,y_10,label='十月份')

y=set(y_3+y_10)

min_y = min(y)

max_y = max(y)

plt.yticks(range(min_y,max_y+1))

x = x_3+x_10

x_lables = ['三月{}日'.format(i) for i in range(1,31)] + ['十月{}日'.format(i) for i in range(1,31)]

plt.xticks(x[::2], x_lables[::2], rotation=45)

plt.xlabel('日期')

plt.ylabel('温度')

plt.title('北京三月份与十月份气温变化趋势图')

plt.grid(alpha=0.3)

plt.legend()

plt.annotate('最高点', xy=(53,28), xytext=(45,26), arrowprops={'arrowstyle':'->'})

plt.annotate('最低点', xy=(73,5), xytext=(45,7), arrowprops={'arrowstyle':'->'})

plt.show()

柱状图的绘制

import matplotlib as mpl

import matplotlib.pyplot as plt

mpl.rcParams['font.sans-serif'] = ['FangSong'] 

mpl.rcParams['font.size'] = 16 

movies = ['哪吒之魔童降世', '流浪地球', '复仇者联盟4:终局之战', '疯狂的外星人', '飞驰人生', '烈火英雄', '速度与激情:特别行动', '蜘蛛侠:英雄远征', '扫毒2天地对决', '大黄蜂', '惊奇队长', '比悲伤更悲伤的故事', '哥斯拉2:怪兽之王', '阿丽塔:战斗天使', '银河补习班', '狮子王', '反贪风暴4 ', '熊出没·原始时代', '使徒行者2:谍影行动', '大侦探皮卡丘']

y = [49.04, 46.18, 42.05, 21.83, 17.03, 16.74, 14.16, 14.01, 12.85, 11.38, 10.25, 9.46, 9.27, 8.88, 8.64, 8.23, 7.88, 7.09, 6.92, 6.34]

x = range(len(movies))

fig = plt.figure(figsize=(20,8))

plt.bar(x,y)

x_lables= ['{}',format(i) for i in range(movies)]

plt.xlabel('电影')

plt.ylabel('票房')

plt.title('2019年电影票房前20位趋势图')

plt.show()

 

 

猜你喜欢

转载自www.cnblogs.com/MonstersM/p/11698659.html