Error message here!

Hide Error message here!

忘记密码?

Error message here!

请输入正确邮箱

Hide Error message here!

密码丢失?请输入您的电子邮件地址。您将收到一个重设密码链接。

Error message here!

返回登录

Close

python实战学习之matplotlib绘图

人生也疯狂 2019-02-19 11:07:00 阅读数:231 评论数:0 点赞数:0 收藏数:0

matplotlib 是最流行的Python底层绘图库,主要做数据可视化图表 可以将数据可视化,能够更直观的呈现数据

matplotlib绘图基本要点

首先实现一个简单的绘图

# 导入pyplot
from matplotlib import pyplot as plt
x = range(1,13)
y = [15,13,14.5,17,20,25,26,26,27,22,18,15]
# 传入x和y,通过plot绘制折现
plt.plot(x,y)
# 展示绘图
plt.show()

更多属性设置

  • 设置图片大小

    fig = plt.figure(figsize=(20,8),dpi=80)
    通过实例化一个figure并且传递参数,能够在后台自动使用该figure
    在图像模糊的时候可以传入dpi参数,让图片更加清晰

  • 保存到本地

    plt.savefig(path) #path 图片的保存路径

  • 中文设置

    my_font = font_manager.FontProperties(fname=r"c:\windows\fonts\simsun.ttc")
    matplotlib默认不支持中文字符,因为默认的英文字体无法显示汉字
    设置中文字体(指定具体的字体文件路径,然后再需要显示中文的地方添加fontproperties参数)

  • x轴,y轴,图表的描述信息

    plt.xlabel("时间",fontproperties=my_font)
    plt.ylabel("温度",fontproperties=my_font)
    plt.title("一天的温度的变化",fontproperties=my_font)

  • 调整x或者y的刻度的间距

    plt.xticks(x) #刻度设置 传入的是列表x的数据
    plt.xticks(x[::2]) #调整刻度 每间隔两个输出一个
    x_ticks = ["第{}个".format(i) for i in x]
    让列表X中的数据和x_ticks上的数据都传入,最终会在x轴上一一对应显示出来 两组数据的长度必须一样
    plt.xticks(x[::5],x_ticks[::5],rotation=45,fontproperties=my_font)
    为了不让字符串重叠覆盖,使用rotation进行旋转rotation=45

  • 线条的样式(比如颜色,透明度等)

    plt.plot(x,label = "数据",linestyle="-",color="red",alpha=0.5)
    linestyle 设置线条的样式
    linewidth 设置线条的粗细
    color设置线条的颜色
    alpha = 0.5 设置线条的透明度
    plt.legend(prop=my_font,loc="best")#通过plot函数的label设置图例
    prop 设置图例的字体
    loc 设置图例的位置 默认为右上角

  • 添加网格

    plt.grid()

  • 标记出特殊的点(比如最高点和最低点)

    获取最大值最小值的索引
    max_indx=y.index(max(y))
    设置最大值
    plt.plot(x[max_indx],y[max_indx],'ks')
    显示最大值
    show_max='['+str(x[max_indx])+','+str(y[max_indx])+']'
    plt.annotate(show_max,xytext=(x[max_indx],y[max_indx]),xy=(x[max_indx],y[max_indx]))

  • 给图片添加一个水印(防伪,防止盗用)

    添加水印
    fig.text(0.75, 0.45, 'hello world',
    fontsize=40, color='gray',
    ha='right', va='bottom', alpha=0.4)

折线图实例

from matplotlib import pyplot as plt
# import random
from matplotlib import font_manager
#matplotlib默认不支持中文字符,因为默认的英文字体无法显示汉字
#设置中文字体(指定具体的字体文件路径,然后再需要显示中文的地方添加fontproperties参数)
my_font = font_manager.FontProperties(fname=r"c:\\windows\\fonts\\simsun.ttc")
#figure图形图标的意思在这里指的就是我们画的图
#通过实例化一个figure并且传递参数,能够在后台自动使用该figure实例
#在图像模糊的时候可以传入dpi参数,让图片更加清晰
fig = plt.figure(figsize=(15,6),dpi=80)
#数据在x轴的一个位置,是一个可迭代对象
x = range(2,26,2)
#数据在y轴的一个位置
y = [15,13,14.5,17,20,25,26,26,27,22,18,15]
# 获取最大值最小值的索引
max_indx=y.index(max(y))
min_indx=y.index(min(y))
#传入x和y,通过plot绘制折线图
#设置线条样式,颜色,透明度
plt.plot(x,y,label = "温度",linestyle="-.",color="red",alpha=0.5)
#通过plot函数的label设置图例
plt.legend(prop=my_font,loc="best")
# 设置最大值
plt.plot(x[max_indx],y[max_indx],'ks')
# 显示最大值
show_max='['+str(x[max_indx])+','+str(y[max_indx])+']'
plt.annotate(show_max,xytext=(x[max_indx],y[max_indx]),xy=(x[max_indx],y[max_indx]))
# 设置最小值
plt.plot(x[min_indx],y[min_indx],'gs')
# 显示最小值
show_min='['+str(x[min_indx])+','+str(y[min_indx])+']'
plt.annotate(show_min,xytext=(x[min_indx],y[min_indx]),xy=(x[min_indx],y[min_indx]))
# 设置水印
fig.text(0.75, 0.45, 'hello world',
fontsize=40, color='gray',
ha='right', va='bottom', alpha=0.4)
# 设置x轴的刻度
x_ticks = ["X日{}点".format(i) for i in x]
plt.xticks(x,x_ticks,rotation=45,fontproperties=my_font)
# 设置x轴,y轴的标注,标题
plt.xlabel("时间",fontproperties=my_font)
plt.ylabel("温度",fontproperties=my_font)
plt.title("一天的温度的变化",fontproperties=my_font)
# 设置网格
plt.grid()
plt.show()

如下图所示

版权声明
本文为[人生也疯狂]所创,转载请带上原文链接,感谢
https://www.cnblogs.com/zh20130424/p/10386788.html

编程之旅,人生之路,不止于编程,还有诗和远方。
阅代码原理,看框架知识,学企业实践;
赏诗词,读日记,踏人生之路,观世界之行;