python中matplotlib画折线图实例(坐标轴数字、字符串混搭及标题中文显示)

最近在用python中的matplotlib画折线图,遇到了坐标轴 “数字+刻度” 混合显示、标题中文显示、批量处理等诸多问题。通过学习解决了,来记录下。如有错误或不足之处,望请指正。

一、最简单的基本框架如下:已知x,y,画出折线图并保存。此时x和y均为数字。

 1 # -*- coding: utf-8 -*-
 2
 3 import matplotlib.pyplot as plt #引入matplotlib的pyplot子库,用于画简单的2D图
 4 import random
 5
 6 x= range(0,20)
 7 y= [random.randint(0,20) for _ in range(20)]
 8
 9 #建立对象
10 fig = plt.figure(figsize=(8,6))
11 ax = fig.add_subplot()
12
13 #画图
14 plt.plot(x,y,‘o-‘,label=u"线条")    #画图
15 plt.show()
16 plt.savefig("temp.png")

二、坐标轴增加字母元素:

用到了如下语句和函数【参考:http://matplotlib.org/examples/ticks_and_spines/tick_labels_from_values.html】:

from matplotlib.ticker import FuncFormatter, MaxNLocator

labels = list(‘abcdefghijklmnopqrstuvwxyz‘)

def format_fn(tick_val, tick_pos):
    if int(tick_val) in xs:
        return labels[int(tick_val)]
    else:
        return ‘‘

ax.xaxis.set_major_formatter(FuncFormatter(format_fn))

ax.xaxis.set_major_locator(MaxNLocator(integer=True))

稍微改动,用到了之前的程序里:

 1 # -*- coding: utf-8 -*-
 2
 3 import matplotlib.pyplot as plt    #引入matplotlib的pyplot子库,用于画简单的2D图
 4
 5 from matplotlib.ticker import FuncFormatter, MaxNLocator
 6
 7 import random
 8
 9 x= range(20)
10
11 y= [random.randint(0,20) for _ in range(20)]
12
13 fig = plt.figure(figsize=(8,6))
14 ax = fig.add_subplot(111)              #建立对象
15
16 labels = [1,2,3,4,5,6,7,8,9,10,‘a‘,‘b‘,‘cc‘,‘d‘,‘e‘,‘f‘,‘g‘,‘h‘,‘*%$‘,‘20‘]
17
18
19 def format_fn(tick_val, tick_pos):
20     if int(tick_val) in x:
21         return labels[int(tick_val)]
22     else:
23         return ‘‘
24
25 ax.xaxis.set_major_formatter(FuncFormatter(format_fn))
26 ax.xaxis.set_major_locator(MaxNLocator(integer=True))
27
28 plt.plot(x,y,‘o-‘,label=u"线条")    #画图
29 plt.show()
30 plt.savefig("temp.png")

这样坐标轴既可以含有字符串,同时也可以含有数字。

三、标题等的中文显示:

用到了如下库和语句:

from matplotlib.font_manager import FontProperties

font1 = FontProperties(fname=r"c:\windows\fonts\simsun.ttc",size=8) #可指定计算机内的任意字体,size为字体大小

plt.title(u"标题",fontproperties=font1)
plt.xlabel(u"x轴)",fontproperties=font1)
plt.ylabel(u"Y轴",fontproperties=font1)
ax.legend(prop=font1, loc="upper right")

这样用到上面程序里,则可以显示中文:

# -*- coding: utf-8 -*-

import matplotlib.pyplot as plt    #引入matplotlib的pyplot子库,用于画简单的2D图
from matplotlib.ticker import FuncFormatter, MaxNLocator
import random
from matplotlib.font_manager import FontProperties

x= range(20) 

y= [random.randint(0,20) for _ in range(20)]

fig = plt.figure(figsize=(8,6))
ax = fig.add_subplot(111)              #建立对象

labels = [1,2,3,4,5,6,7,8,9,10,‘a‘,‘b‘,‘cc‘,‘d‘,‘e‘,‘f‘,‘g‘,‘h‘,‘*%$‘,‘20‘]

def format_fn(tick_val, tick_pos):
    if int(tick_val) in x:
        return labels[int(tick_val)]
    else:
        return ‘‘

ax.xaxis.set_major_formatter(FuncFormatter(format_fn))
ax.xaxis.set_major_locator(MaxNLocator(integer=True))
#可指定计算机内的任意字体,size为字体大小
font1 = FontProperties(fname=r"c:\windows\fonts\simsun.ttc",size=20)
plt.title(u"标题",fontproperties=font1)
plt.xlabel(u"x轴",fontproperties=font1)
plt.ylabel(u"Y轴",fontproperties=font1)

plt.plot(x,y,‘o-‘,label=u"线条")    #画图
ax.legend(prop=font1, loc="upper right")
plt.show()
plt.savefig("temp.png")

画出的图如下:

四、不显示图片,以便进行批处理:

import matplotlib
matplotlib.use(‘Agg‘)

需加在 import matplotlib.pyplot as plt 之前,然后删掉plt.show()即可。

时间: 2024-12-10 18:20:04

python中matplotlib画折线图实例(坐标轴数字、字符串混搭及标题中文显示)的相关文章

Matplotlib学习---用matplotlib画折线图(line chart)

这里利用Jake Vanderplas所著的<Python数据科学手册>一书中的数据,学习画图. 数据地址:https://raw.githubusercontent.com/jakevdp/data-CDCbirths/master/births.csv 准备工作:先导入matplotlib和pandas,用pandas读取csv文件,然后创建一个图像和一个坐标轴 import pandas as pd from matplotlib import pyplot as plt birth=p

【Python】matplotlib绘制折线图

一.绘制简单的折线图 import matplotlib.pyplot as plt squares=[1,4,9,16,25] plt.plot(squares) plt.show() 我们首先导入模块pylot,并给他指定别名plt,然后创建列表,存储前述的平方数,再将这个列表传递给函数plot(),这个函数尝试根据这些数字绘制出有意义的图形.plot.show()打开matplotlib查看器,并显示绘制图形. 运行结果: 二.修改标签文字和线条粗细 #coding:UTF-8 impor

Matplotlib绘制折线图

折线图(plot) 基本使用 import matplotlib.pyplot as plt  # 导包 plt.figure()  # 1)创建画布(容器层) plt.plot([1, 2, 3, 4, 5, 6 ,7], [17, 17, 18, 15, 11, 11, 13])  # 2)绘制折线图(图像层) plt.show()  # 3)显示图像 设置画布属性与图片保存 plt.figure(figsize=(), dpi=)  # 返回fig对象 figsize:指定图的长宽 dpi

IOS使用Core-Plot画折线图

关于Core-Plot的配置,大家可以参考我的上一篇博客:http://1.wildcat.sinaapp.com/?p=99 版权所有,转载请注明原文转自:http://blog.csdn.net/wildcatlele/article/details/25483923 大家可以到:http://1.wildcat.sinaapp.com/?p=102观看本篇博客更友好的排版格式 或者你英语好也可以参考github上的wiki介绍:https://code.google.com/p/core-

Cocos2d3.0 画折线图

实现用2dx画折线图,为以后用2dx开发应用做准备 下面记录下使用方法 auto lineView = DJLineChart::create(); std::vector<float> vec; vec.push_back(130); vec.push_back(520); vec.push_back(60); vec.push_back(0); vec.push_back(140); vec.push_back(100); vec.push_back(30); vec.push_back(

Java画折线图

??? JFreeChart 是开放源代码站点SourceForge.net 上的一个 JAVA 项目,它主要用来各种各样的图表,这些图表包括:饼图.柱状图 ( 普通柱状图以及堆栈柱状图 ).线图.区域图.分布图.混合图.甘特图以及一些仪表盘等等. ??? 应用jfreechart来画图需要两个jar包:jfreechart.jar和jcommon.jar,直接去官网下载就成: https://sourceforge.net/projects/jfreechart/files/ ?? 下载完成后

python中matplotlib实现最小二乘法拟合的过程详解

这篇文章主要给大家介绍了关于python中matplotlib实现最小二乘法拟合的相关资料,文中通过示例代码详细介绍了关于最小二乘法拟合直线和最小二乘法拟合曲线的实现过程,需要的朋友可以参考借鉴,下面来一起看看吧. 前言 最小二乘法Least Square Method,做为分类回归算法的基础,有着悠久的历史(由马里·勒让德于1806年提出).它通过最小化误差的平方和寻找数据的最佳函数匹配.利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小.最小二乘法还

Matplotlib学习---用matplotlib画雷达图(radar chart)

雷达图常用于对多项指标的全面分析.例如:HR想要比较两个应聘者的综合素质,用雷达图分别画出来,就可以进行直观的比较. 用Matplotlib画雷达图需要使用极坐标体系,可点击此链接,查看对极坐标体系的介绍:https://www.cnblogs.com/kallan/p/6738577.html. 下面,我们从五个方面(编程能力,沟通技能,专业知识,团队协作,工具掌握)来对路人甲和路人乙进行比较. 代码如下: import numpy as np from matplotlib import p

unity 画折线图,饼型图插件

在unity中画折线图,和饼型图等数据分析图是很困难 的一件事,幸好我找到了一个插件很方便的解决了这件事,效果如下图: 折线图,饼型图,等. 运行效果如下: 百度网盘下载地址:链接:https://pan.baidu.com/s/10oLG1Zmffv7ASWG0pvx05w 提取码:lub1 如果链接失效,请留言. 原文地址:https://blog.51cto.com/14058389/2425723