目录

matplotlib应用介绍

一天天气变化图

两小时随机温度图 

  中文显示问题

个人交往统计图

多人交往统计图

总结

 

android 绘制天气折线 天气折线图怎么画_python

 


 

介绍:

 

android 绘制天气折线 天气折线图怎么画_数据_02

 

举个例子(一天天气变化图):

假设一天中每隔两个小时(range(2,26,2))的气温(℃)分别是[15,13,14.5,17,20,25,26,26,27,22,18,15],将其变成折线图进行展示

android 绘制天气折线 天气折线图怎么画_字符串_03

在windows中系统中展示的图片如图:

 

android 绘制天气折线 天气折线图怎么画_字符串_04

现在来优化代码:

设置图片大小



from matplotlib import pyplot as plt

x = range(2, 26, 2) 
y = [15,13,14.5,17,20,25,26,26,27,22,18,15] 

# figure图形图标的意思,这里只画的图
# 通过实例化一个figure并且传递参数,能够在后台自动使用该figure实例
# dpi 表示一个像素点的个数
plt.figure(figsize=(10, 7), dpi=80)

# 绘制折线图
plt.plot(x, y) 
# 保存(svg文件在浏览器中打开放大不会失帧)
plt.savefig('./sig_size.png')
# 展示图形
# plt.show()



 

图片展示

android 绘制天气折线 天气折线图怎么画_字符串_05

设置x,y轴的数值



from matplotlib import pyplot as plt

x = range(2, 26, 2) 
y = [15,13,14.5,17,20,25,26,26,27,22,18,15] 

plt.figure(figsize=(10, 7), dpi=80)

plt.plot(x, y) 

# 单独设置x轴
# _xticks = range(2, 26, 2) # list(_xticks): [2,4,6,8...]
_xticks = [i/2 for i in range(4, 49)] # [2.0, 2.5, 3.0, 3.5 .....]
# 刻度太密集可以使用列表步长
plt.xticks(_xticks[::3])
# y轴利用数据最小值最大值进行设置范围(最大值需要+1才能取到值)
plt.yticks(range(min(y), max(y)+1))
plt.show()



android 绘制天气折线 天气折线图怎么画_折线图_06

 

如果列表a表示10点到12点的每一分钟的气温,如何绘制折线图观察每分钟气温的变化情况?
a= [random.randint(20,35) for i in range(120)]

从逻辑上完成功能实现:



import random
from matplotlib import pyplot as plt

x = range(0, 120) 
y = [random.randint(20,35) for i in range(120)]
plt.figure(figsize=(16, 8), dpi=80)
plt.plot(x, y) 

# 设置x轴刻度
_xticks_label = ['10点{}分'.format(i) for i in range(60)]
_xticks_label += ['11点{}分'.format(i) for i in range(60)]
#rotation  旋转
plt.xticks(list(x)[::5], _xticks_label[::5], rotation=45)
plt.yticks(range(min(y), max(y)+1))
plt.show()



 

 但是会发现字体出现问题

android 绘制天气折线 天气折线图怎么画_数据_07

所以需要解决字体的显示问题




android 绘制天气折线 天气折线图怎么画_python_08


所以在windows,或者linux中,可能有效的办法:


import random
import matplotlib

from matplotlib import pyplot as plt


# 这是windows和linux设置字体的方式


font = {
    'family': 'MicroSoft YaHei',
    'weight': 'bold',
    'size': 'larger'
}
matplotlib.rc("font", **font)
# 类似于matplotlib.rc("font", family='MicroSoft YaHei', weight='blod', size='larger')

x = range(0, 120) 
y = [random.randint(20,35) for i in range(120)]
plt.figure(figsize=(16, 8), dpi=80)
plt.plot(x, y) 

# 设置x轴刻度
_xticks_label = ['10点{}分'.format(i) for i in range(60)]
_xticks_label += ['11点{}分'.format(i) for i in range(60)]
#rotation  旋转


#取步长,数字和字符串一一对应,数据的长度一样


plt.xticks(list(x)[::5], _xticks_label[::5], rotation=45)
plt.yticks(range(min(y), max(y)+1))
plt.show()


 

 但是不保证成功,因为电脑的字体配置情况不同

第二种推荐的方法:

自己设置字体文件:(字体库下载)windows在 C:\Windows\Fonts\路径下就是字体文件

import random
import matplotlib

from matplotlib import pyplot as plt
from matplotlib import font_manager

# 另一种设置字体的方式
my_font = font_manager.FontProperties(fname="./Hiragino Sans GB.ttc")

x = range(0, 120) 
y = [random.randint(20,35) for i in range(120)]
plt.figure(figsize=(16, 8), dpi=80)
plt.plot(x, y) 

# 设置x轴刻度
_xticks_label = ['10点{}分'.format(i) for i in range(60)]
_xticks_label += ['11点{}分'.format(i) for i in range(60)]
#rotation  旋转
plt.xticks(list(x)[::5], _xticks_label[::5], rotation=45, fontproperties=my_font)
plt.yticks(range(min(y), max(y)+1))
plt.show()


 

android 绘制天气折线 天气折线图怎么画_数据_09

可以通过size属性设置字体大小:


plt.xticks(list(x)[::5], _xticks_label[::5], rotation=45, fontproperties=my_font, size=12)


android 绘制天气折线 天气折线图怎么画_数据_10

再给折线图添加一些描述信息,就算完成了


import random
import matplotlib

from matplotlib import pyplot as plt
from matplotlib import font_manager

# 另一种设置字体的方式
my_font = font_manager.FontProperties(fname="./Hiragino Sans GB.ttc")

x = range(0, 120) 
y = [random.randint(20,35) for i in range(120)]
plt.figure(figsize=(14, 8), dpi=80)
plt.plot(x, y) 

# 设置x轴刻度
_xticks_label = ['10点{}分'.format(i) for i in range(60)]
_xticks_label += ['11点{}分'.format(i) for i in range(60)]
#rotation  旋转
#取步长,数字和字符串一一对应,数据的长度一样
plt.xticks(list(x)[::5], _xticks_label[::5], rotation=45, fontproperties=my_font, size=10)
plt.yticks(range(min(y), max(y)+1))

# 添加描述信息
plt.xlabel('时间', fontproperties=my_font, size=14)
plt.ylabel('温度(单位:℃)', fontproperties=my_font, size=14)
plt.title('10点到12点每分钟气温的变化情况', fontproperties=my_font, size=20)

plt.show()


android 绘制天气折线 天气折线图怎么画_android 绘制天气折线_11

举个例子(个人交往统计图)

假设大家在30岁的时候,根据自己的实际情况,统计出来了从11岁到30岁每年交的女(男)朋友的数量如列表a,请绘制出该数据的折线图,以便分析自己每年交女(男)朋友的数量走势
a = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
要求:
y轴表示个数
x轴表示岁数,比如11岁,12岁等


from matplotlib import pyplot as plt
from matplotlib import font_manager

my_font = font_manager.FontProperties(fname='./Hiragino Sans GB.ttc')

x = range(11, 31)
y = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
plt.figure(figsize=(10, 7), dpi=80)
plt.plot(x, y)

_xtick_label = ['{}岁'.format(i) for i in x]
plt.xticks(x, _xtick_label, fontproperties=my_font)
# 辅助线
plt.grid(alpha=0.4) # 透明度
plt.xlabel('时间', fontproperties=my_font)
plt.ylabel('女朋友数(单位:个)', fontproperties=my_font)
plt.title('11到30岁之间谈过的女朋友的数量统计', fontproperties=my_font)

plt.show()


android 绘制天气折线 天气折线图怎么画_android 绘制天气折线_12

举个例子(多人交往统计图)

假设大家在30岁的时候,根据自己的实际情况,统计出来了你和你同桌各自从11岁到30岁每年交的女(男)朋友的数量如列表a和b,

请在一个图中绘制出该数据的折线图,以便比较自己和同桌20年间的差异,同时分析每年交女(男)朋友的数量走势

a = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
b = [1,0,3,1,2,2,3,3,2,1 ,2,1,1,1,1,1,1,1,1,1]
要求:
y轴表示个数
x轴表示岁数,比如11岁,12岁等

legend(loc=数字)

Location String

Location Code

'best'

0

'upper right'

1

'upper left'

2

'lower left'

3

'lower right'

4

'right'

5

'center left'

6

'center right'

7

'lower center'

8

'upper center'

9

'center'

10

android 绘制天气折线 天气折线图怎么画_折线图_13

android 绘制天气折线 天气折线图怎么画_android 绘制天气折线_14


from matplotlib import pyplot as plt
from matplotlib import font_manager

my_font = font_manager.FontProperties(fname='./Hiragino Sans GB.ttc')

x = range(11, 31)
y1 = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
y2 = [1,0,3,1,2,2,3,3,2,1,2,1,1,1,1,1,1,1,1,1]
plt.figure(figsize=(10, 7), dpi=80)
plt.plot(x, y1, label='自己', color='r', linestyle='--')
plt.plot(x, y2, label='同桌', linewidth=5, alpha=0.8)
_xticks_label = ['{}岁'.format(i) for i in x]
plt.xticks(x, _xticks_label, fontproperties=my_font)
plt.grid(alpha=0.4)
# 添加图例
plt.legend(prop=my_font, loc=0)
plt.show()


android 绘制天气折线 天气折线图怎么画_python_15

 

android 绘制天气折线 天气折线图怎么画_数据_16

 

 

 

 

 

  

 

STXINGKA.TTF