用matplotlib绘制带误差的条形图及中英文字体设置

  1 #!/usr/bin/env python3
  2
  3 ## 以下是一个带误差条的条形图的例子,演示了误差条形图的绘制及中英文字体设置
  4 import numpy as np
  5 import matplotlib as mpl
  6 import matplotlib.pyplot as plt
  7 from matplotlib.font_manager import FontProperties as FP
  8
  9 # %matplotlib inline
 10 # %config InlineBackend.figure_format = ‘svg‘
 11
 12 mpl.rcParams[‘text.usetex‘] = False
 13 mpl.rcParams[‘figure.figsize‘] = (7.40, 5.55) # unit: inch
 14 mpl.rcParams[‘figure.frameon‘] = False
 15
 16 ## 中文设置
 17 # matplotlib默认不支持ttc,所以可以将ttc转换ttf先。
 18 # 将Windows字体 simsun.ttc上传到 https://transfonter.org/ttc-unpack 在线转换成TTF,
 19 # 得到simsun.ttf和nsimsun.ttf,将两个ttf文件放到PYTHON安装目录的
 20 # Lib\site-packages\matplotlib\mpl-data\fonts\ttf 子目录下。
 21 # 删除字体缓存以便重新生成字体缓存:$HOME/.matplotlib/fontList.py3k.cache
 22
 23
 24 # 全局中文设置
 25 mpl.rcParams[‘font.family‘] = ‘sans-serif‘
 26 mpl.rcParams[‘font.sans-serif‘] = ‘NSimSun,Times New Roman‘
 27
 28 # 局部中文:设置分别为中文和英文设置两个FontProperties,以便局部切换中英文字体
 29 cfp = FP(‘NSimSun‘, size=12)
 30 efp = FP(‘Times New Roman‘, size=12)
 31
 32 fig,ax = plt.subplots()
 33
 34 xticklabels = (‘G1‘, ‘G2‘, ‘G3‘)
 35 ylabel = ‘d‘
 36
 37 male_means = (9, 10, 9)
 38 male_std = (4.66, 3.52, 5.32)
 39 female_means = (12, 14, 12)
 40 female_std = (6.96, 5.46, 3.61)
 41 title = ‘XX实验结果‘
 42
 43 N=3
 44 ind = np.arange(N)  # the x locations for the groups
 45 width = 0.35  # the width of the bars
 46 with plt.style.context((‘ggplot‘)):
 47     rects1 = ax.bar(
 48         ind - 0.02, female_means, width, color=‘darkgrey‘, yerr=female_std)
 49     rects2 = ax.bar(
 50         ind + 0.02 + width,
 51         male_means,
 52         width,
 53         color=‘lightgrey‘,
 54         yerr=male_std)
 55
 56     ax.set_ylabel(‘d‘, fontproperties=efp, rotation=0)
 57     # 在label、title中可用参数‘fontproperties‘ 指定字体
 58
 59     ax.yaxis.set_label_coords(-0.05, 0.95)
 60     ax.set_title(title)
 61     ax.set_xticks(ind + width / 2)
 62
 63     ax.set_xticklabels(xticklabels, fontproperties=efp)
 64
 65     ax.legend((rects1[0], rects2[0]), (‘处理A‘, ‘处理B‘), prop=cfp, framealpha=0)
 66     # 在legend中可用参数‘prop‘指定字体,注意不是‘fontproperties‘
 67
 68     def autolabel(rects, yerr):
 69         """
 70         Attach a text label above each bar displaying its height
 71         """
 72         for i in range(0, N):
 73             rect = rects[i]
 74             height = rect.get_height()
 75             ax.text(
 76                 rect.get_x() + rect.get_width() / 2.,
 77                 1.05 * height,
 78                 ‘%0.2f‘ % yerr[i],
 79                 ha=‘left‘,
 80                 va=‘bottom‘,
 81                 family=‘Georgia‘,
 82                 fontsize=9)
 83             #在text函数中可用family和fontsize指定字体
 84
 85     autolabel(rects1, female_means)
 86     autolabel(rects2, male_means)
 87
 88 ax.text(
 89     1,
 90    20,
 91     ‘Hello World‘,
 92     color = ‘b‘,
 93     ha=‘left‘,
 94     va=‘bottom‘,
 95     fontproperties=efp)
 96 # 在text函数中也可用fontproperties指定字体
 97
 98 fig.tight_layout()
 99 fig.savefig(‘filename.svg‘, format=‘svg‘)
100 # 保存为矢量图svg格式,如需插入word,可以用inkscape软件将其转换成emf格式
时间: 2024-07-31 13:07:39

用matplotlib绘制带误差的条形图及中英文字体设置的相关文章

3.matplotlib绘制条形图

plt.bar() # coding=utf-8 from matplotlib import pyplot as plt from matplotlib import font_manager my_font = font_manager.FontProperties(fname="/System/Library/Fonts/Hiragino Sans GB.ttc") a = ["战狼2","速度与激情8","功夫瑜伽",

pyqt中使用matplotlib绘制动态曲线

一.项目背景: 看了matplotlib for python developers这本书,基本掌握了在pyqt中显示曲线的做法,于是自己写一个. 二.需求描述: 1)X轴显示时间点,显示长度为1分钟,每一秒钟绘制一个点,X轴长度超过1分钟,则左移1秒刻度,实现动态效果 2)Y轴显示随机变化的数值,1-100 三.准备工作 1环境:python3.3,eric5,pyqt4 四.开始动手: 使用Eric创建新项目: 在设计编码前期主要用到Eric的两个窗口:源码和窗体浏览器,类似delphi.

matplotlib:使用matplotlib绘制图表

matplotlib下载及API手册地址:http://sourceforge.net/projects/matplotlib/files/matplotlib/ 数学库numpy下载及API手册地址:http://www.scipy.org/Download 几个绘图的例子[来自API手册] 1.最简单的图: 代码: #!/usr/bin/env python import matplotlib.pyplot as plt plt.plot([10, 20, 30]) plt.xlabel('

广义mandelbrot集,使用python的matplotlib绘制,支持放大缩小

迭代公式的指数,使用的1+5j,这是个复数,所以是广义mandelbrot集,大家可以自行修改指数,得到其他图形.各种库安装不全的,自行想办法,可以在这个网站找到几乎所有的python库 http://www.lfd.uci.edu/~gohlke/pythonlibs/#matplotlib #encoding=utf-8 import numpy as np import pylab as pl import time from matplotlib import cm from math

Android 使用Universal Image Loader绘制带圆角的图片(一)

Android 使用Universal Image Loader绘制带圆角的图片(一) 绘制带圆角的控件难吗?貌似不难.对于一个普通layout或者widget,要绘制圆角,只要把 background设置成下面这样的drawable就行了. <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/and

Python + Matplotlib 绘制 Penrose 铺砌

效果是不是很漂亮呢? 代码如下: #----------------------------------------- # Python + Matplotlib 绘制 Penrose 铺砌 # by Zhao Liang [email protected] #----------------------------------------- import matplotlib.pyplot as plt import numpy as np from matplotlib.path impor

用Matplotlib绘制二维图像

唠叨几句: 近期在做数据分析,需要对数据做可视化处理,也就是画图,一般是用Matlib来做,但Matlib安装文件太大,不太想直接用它,据说其代码运行效率也很低,在网上看到可以先用Java做数据处理,然后调用Matlib来画图,另外,还可以使用Matplotlib,它是用Python写的类似Matlib的库,能实现Matlib的功能,而且画图的质量很高,可用于做论文发表.找了一天的资料,终于出图了. Matplotlib需要配合numpy,scipy才能使用,具体安装步骤稍后补充. 正文: 用M

Python使用matplotlib绘制三维曲线

本文主要演示如何使用matplotlib绘制三维图形 代码如下: # -*- coding: UTF-8 -*- import matplotlib as mpl from mpl_toolkits.mplot3d import Axes3D import numpy as np import matplotlib.pyplot as plt # 设置图例字号 mpl.rcParams['legend.fontsize'] = 10 fig = plt.figure() # 设置三维图形模式 a

HTML5学习笔记-绘制变形图形之绘制带阴影图形

绘制带阴影效果的图形 在canvas上绘制带阴影效果的图形只需设置shadowOffsetX,shadowOffsetY,shadowBlur,shadowColor属性. shadowOffsetX,shadowOffsetY表示阴影的x,y偏移量单位像素:可以使用负值,正负偏移方向不同.shadowBlur设置阴影模糊程度,值越大,阴影越模糊,效果与Photoshop的高斯模糊滤镜相同:shadowColor设置阴影颜色. 1 <h3>绘制阴影效果</h3> 2 <can