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()即可。

时间: 12-26

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

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-

python的turtle模块画折线图

代码如下: import turtle yValues = [10.0,7.4,6.4,5.3,4.4,3.7,2.6] def main(): t = turtle.Turtle() t.hideturtle() drawLine(t,0,0,300,0) #画x轴 drawLine(t,0,0,0,175) #画y轴 #画折线 for i in range(6): drawLineWithDots(t,40 + (40 * i),15 * yValues[i],40 + (40 * (i+1

echarts入门基础,画折线图

<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> .box{ transform: translate(50%,50%); -webkit-transform: translate(-50%,-50%); -moz-transform: transla

Android画折线图、柱状图、饼图(使用achartengine.jar)

自从用了画折线的jar包之后,就不想再用canvas画布去画了,编程就是要站在巨人的肩膀上. 所需要的jar包achartenginejar 折线代码布局文件就不上传了很简单 另一种线的渲染器 扇形图代码 柱状图代码 属性总结部分代码 新测试代码下载地址 所需要的jar包:achartengine.jar 下载地址:http://download.csdn.net/detail/zhengyikuangge/9460642 折线代码(布局文件就不上传了,很简单): package com.exa

echarts在同一个dom上多次画图有时候不显示,有时候饼图中出现折线图的坐标轴

在init方法前,添加如下代码: var myChart = null; if (myChart && myChart.dispose) { myChart.dispose(); } myChart = echarts.init(document.getElementById("main"));

python中matplotlib的颜色及线条控制

参考网址: http://stackoverflow.com/questions/22408237/named-colors-in-matplotlib http://stackoverflow.com/questions/8409095/matplotlib-set-markers-for-individual-points-on-a-line 代码: plt.subplots(1, 1) x= range(100) y= [i**2 for i in x] plt.plot(x, y, li

matlab画折线图

y1 = [99.02,99.22,98.86]; y2 = [98.59,98.49,98.14]; plot(y1,'-b','LineWidth',1.5); %其中-b表示为蓝色,linewidth表示线的宽度为1.5 hold on; %在一次曲线结束后加上hold on 可以使得下一条曲线也出现在图上 plot(y2,'-g','LineWidth',1.5'); %-g表示绿色 set(gca,'xTick',1:3); %表示横坐标有三个值set(gca,'xTicklabel'

Android 用achartengine 画折线图怎么显示不正确

============问题描述============ X.Y的刻度值都是我自己定义的 显示的点的位置不正确 请问是什么原因 怎么处理  还有我设置了显示网格 为什么不显示了 Y轴不设置自己的定义的刻度值 但是刻度个数又不对 这种情况显示是正确的就是刻度个数不够 ============解决方案1============ 属性设置不对,找个demo仔细看看设置,看自己哪里设置不对. ============解决方案2============ 我以前整理的一个曲线图,我共享下,你下载看看,里面东

Python中使用matplotlib 如何绘制折线图?

本文和大家分享的主要是python开发中matplotlib 绘制折线图相关内容,一起来看看吧,希望对大家学习和使用这部分内容有所帮助. matplotlib 1.安装matplotlib ① linux系统安装 # 安装matplotlib模块 $ sudo apt-get install python3-matplotlib# 如果是python2.7 执行如下命令 $ sudo apt-get install python-matplotlib# 如果你安装较新的Python,安装模块一乐