1.2 颜色、标记和线类型

matplotblib 的主函数 plot 接收带有x and y 轴的数组以及一些可选的字符串缩写参数来指名颜色和线类型。例如要用绿色括折号绘制 x 对 y 的线:ax.plot(x,y,'g--') 或者 ax.plot(x,y,linestyle='--',colur='g')

很多颜色缩写被用于常用颜色,可以指定十六进制的颜色代码(#CECECE)。

参考plot函数的文档查看所有线类型(jupyter 中使用plot?)

'b' blue
'g' green
'r' red
'c' cyan
'm' magenta
'y' yellow
'k' black
'w' white
'-' solid line style
'--' dashed line style
'-.' dash-dot line style
':' dotted line style

折线图还可以又标记来凸显实际的数据点,matplotlib 创建一个连续的折线图,插入点之间有时分辨不出。标记可以是样式字符串的一部分,样式字符串中的线类型,标记类型必须在颜色后面。


plot(np.random.randn(30).cumsum(),color='r',linestyle='dashed',marker='s') 更加显式的代码

后续的点默认式线性内插的。。。通过drawstyle 选项来更改


。。。。讲究。。。。。

由于我们像plot 传递来 label ,我们可使用plt.legend 为每条线生成一个用于区分的图例。(无论是否又label选项都要调用plt.legend 来生成图例。)

1.3 刻度、标签和图例

对于大多数图标修饰工作,有两种主要方式,使用程序性的pyplot 接口 和更多面向独享的原生 matplotlib API。

pyplot 接口设计为交互式使用,包含了 xlim, xticks 和 xticklabels 等方法。这些方法分别控制了绘图范围,刻度位置以及刻度标签。

  • 在没有函数参数的情况下调用,返回当前的参数值(例如 plt.xlim() 返回当前的x 轴绘图范围)
  • 传入参数的情况下调用,例如:plt.xlim([0,10]) 会将x 轴的范围设置为0 到10.

这些方法都会在当前活动的回落最近创建的 AxesSubplot 上生效,这些方法的每一个对应于子图自身的两个方法,比如 xlim 对应于 ax.get_lim and ax.set_lim 。好像使用 subplot 的方法更加显式,,,,(使用subplot_kw参数,就是add_subplot的参数)

add_subplot参数(部分) 含义
projection 子图的投影类型{None, ‘aitoff’, ‘hammer’, ‘lambert’, ‘mollweide’, ‘polar’, ‘rectilinear’, str},。。应该就是子图的类型,
polar 等于 projection=‘polar’
alpha 透明度
facecolor fc 颜色,轴面/轴的颜色
labe xlabel ylabell 标签
title 标题
xlim ylim 设置x轴视图限制。(bottom: float, top: float)
xticklabels yticklabels 刻度标签,列表
xticks yticks 刻度,列表

1.3.1 设置标题,轴标签,刻度和刻度标签


修改y 轴坐标是相同的过程,将上面的x 替换成 y 就行,轴的类型有一个 set 方法,可以批量设置绘图属性。

感觉用上subplots 不如在外面设置,在外面使用函数,功能还能多一些。

1.3.2 添加图例

图例是用来区分绘图元素。最简单的方式是在添加每个图表时传递label 参数。


legend 方法多了个loc 的位置参数。告诉在哪里放置图表,best 会自动选择适合的位置(尽量少的重叠图像),如果要取消图例中的元素,不要传入 label 或 label = ‘_nolegend_’

    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===============   =============bbox_to_anchor  与loc一起用于定位图例的框(x, y, width, height)or(x,y)ncol  图例的列数,默认1fontsize  nt或float 图例字体大小。shadow   None or bool 阴影framealpha   背景的不透明度facecolor  背景色title/title_fontsize

1.4 注释与子图加工

在图表上绘制自己的注释,而且注释中可能包含文本,箭头以及其他图形。你可以使用 text arrow annote 方法来添加注释和文本。
text 在图表上给定的坐标 (x,y) 根据可选的定制样式绘制文本。as.text(x,y,'hello world',family='monospace',fontsize=10)

绘制标普500指数从2007年以来的收盘价,并在图表中标注从2008到2009年金融危机的重要日期(阿巴阿巴阿巴阿巴)

还没见过 asof这个函数。。。DataFrame/Series.asof(where, subset=None)

返回where之前没有nan 的最后一行。subset, 对于dataframe ,使用指定的列来检查nan。

如果没有对应的值就返回nan。

>>> s = pd.Series([1, 2, np.nan, 4], index=[10, 20, 30, 40])
>>> s
10    1.0
20    2.0
30    NaN
40    4.0
dtype: float64>>> s.asof(20)     # 获得 索引20 的值
2.0>>> s.asof([5, 20])   # 对于多个,第一个没有返回nan,
5     NaN
20    2.0
dtype: float64>>> s.asof(30)   # 这个是nan,就返回之前不是nan 的最后一行。
2.0df = pd.DataFrame({'a': [10, 20, 30, 40, 50],'b': [None, None, None, None, 500]},index=[1,2,3,4,5])
df.asof([3.5,4.5])        # 考虑所有行的话,要找都不是nan 的,a  b
3.5 NaN NaN
4.5 NaN NaNdf.asof([3.5,4.5],subset=['a'])a      b                # 这里只考虑 a
3.5 30.0    NaN
4.5 40.0    NaN
from datetime import datetime
fig=plt.figure()
ax=fig.add_subplot(1,1,1)
data=pd.read_table('spx.csv',sep='\t',header=None,parse_dates=True,index_col=0)
data.columns=['spx']  # (https://github.com/wesm/pydata-book/blob/2nd-edition/examples/spx.csv) 相关文件
spx=data['spx']
spx.plot(ax=ax,style='k-')
crisis_data = [(datetime(2007, 10, 11), 'Peak of bull market'),(datetime(2008, 3, 12), 'Bear Stearns Fails'),(datetime(2008, 9, 15), 'Lehman Bankruptcy')
]
for date,label in crisis_data: # ax.annotate方法在指定的x和y 坐标上绘制标签ax.annotate(label,xy=(date,spx.asof(date)+75),xytext=(date,spx.asof(date)+225),arrowprops=dict(facecolor='black',headwidth=4,width=2,headlength=4),horizontalalignment='left',verticalalignment='top')# 话说这位置,箭头宽度的参数的选择有什么方法吗。。。。
# 放大2007年 到 2010年
ax.set_xlim(['1/1/2007', '1/1/2011'])        # ['2007-1-1', '2011-1-1'] 这样也行的,所有为啥要那么写
ax.set_ylim([600, 1800])             # 使用这两个方法手动设置图标的边界,而不是使用matplotlib的默认设置。ax.set_title('Important dates in the 2008-2009 financial crisis')

annotate(s,xy, args,* kwargs)** , 用文本text 注释点xy。

  • xytext 放置文本的位置(x,y)。如果为None,则默认为xy。
  • xycoords 给出xy的坐标系。
  • textcoords xytext 的坐标系
  • arrowprops dict 在位置xy和xytext之间绘制箭头的属性
  • comment_clip bool或无 当注释点xy在轴区域之外时是否绘制注释。
  • **kwargs 传递给Text 的参数。。禁止套娃,,又是一片参数被恶心到了。。。脑补链接

如果arrowprops不包含键“ arrowstyle”,则允许的键为:

Key Description
width 箭头宽度(以磅为单位)
headwidth 箭头底部的宽度(以磅为单位)
headlength 箭头的长度(以磅为单位)
shrink 总长度的分数从两端缩小
? Any key to matplotlib.patches.FancyArrowPatch

如果arrowprops包含键“ arrowstyle”,则禁止使用上述键。的允许值为 ‘arrowstyle’:

Name Attrs
‘-’ None
‘->’ head_length=0.4,head_width=0.2
‘-[’ widthB=1.0,lengthB=0.2,angleB=None
‘|-|’ widthA=1.0,widthB=1.0
‘-|>’ head_length=0.4,head_width=0.2
‘<-’ head_length=0.4,head_width=0.2
‘<->’ head_length=0.4,head_width=0.2
‘<|-’ head_length=0.4,head_width=0.2
‘<|-|>’ head_length=0.4,head_width=0.2
‘fancy’ head_length=0.4,head_width=0.4,tail_width=0.4
‘simple’ head_length=0.5,head_width=0.5,tail_width=0.2
‘wedge’ tail_width=0.3,shrink_factor=0.5
**kwargs 描述
color / backgroundcolor 字体/背景色
fontsize {size in points, ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’} 字体大小
horizontalalignment {‘center’,‘right’,‘left’} 水平对齐方式
varticalalignment {‘center’,‘top’,‘bottom’,‘baseline’,‘center_baseline’} 垂直对齐方式

for date,label in crisis_data: # ax.annotate方法在指定的x和y 坐标上绘制标签ax.annotate(label,xy=(date,spx.asof(date)+75),xytext=(date,spx.asof(date)+225),arrowprops=dict(arrowstyle='wedge'),horizontalalignment='right',verticalalignment='baseline',fontsize='large',color='r',backgroundcolor='g')# 整个难看点的。。。


matplotlib 含有表示多种常见图形的对象,这些对象的引用是 patches ,一些图像比如 Rectangle 矩形,Circle 圆形,可以使用 matplotlib.pyplot 中找到,但图形的全集位于 matplotlib.patches 。

想在图表中添加图形,你需要生成patch(补丁)对象shp, 并调用 ax.add_patch(shp) 将它加入到子图中。

matplotlib.patches.Rectangle(xy, width, height, angle=0.0, **kwargs)

  • xy (float,float),底部和左侧矩形坐标
  • width height 宽度 高度
  • angle 角度,逆时针旋转角度
  • fill 是否填充矩形,默认True

matplotlib.patches.Circle(xy, radius=5, **kwargs)

  • xy 半径中心,
  • redus 半径。

matplotlib.patches.Polygon(xy, closed=True, **kwargs)

  • xy 一个形状为 NX 2的 numpy 数组,
  • close 是否封闭,默认True

Axes.add_patch§
添加一个补丁。。。

1.5 将图片保存到文件

plt.savefig 将活动图片保存到文件,plt.savefig('figpath.svg')

使用 dpi ,分辨率,bbox_inches 修剪图形的空白。plt.savefig('figpath.pnt',dpi=400,bbox_inches='tight')

savaifig 并不一定要写入硬盘,它可以将图片写入到所有的文件型对象中,例如BytesIO"

from io import BytesIO
buffer=BytesIO()              # 学到了buffer 对象这么生成啊
plt.savefig(buffer)
plot_data=buffer.getvalue()
参数 描述
fname 包含文件路径或python文件型对象的字符串,图片格式是从文件扩展名中推断来的
dpi 分辨率,默认100
facecolor,edgecolor 子图以外背景的颜色,默认时 w 白色
format 文件格式
bbox_inches 要保持的图片范围,如果是 tight 就除掉图片周围空白的部分。
with open('plt.jpg','wb') as f:plt.savefig(f,facecolor='r',edgecolor='b',bbox_inches='tight')# 感觉 edgecolor 没啥效果欸

1.6 matplotlib 设置

matplotlib 配置了配色方案和默认设置,主要用来准备用于发布的图片,几乎所有默认行为都可以通过广泛的全局参数来定制,包括图形大小,子图间距,颜色,字体大小和网格样式等。使用 rc 方法是更改配置的一种方式,

matplotlib.pyplot.rc(group, **kwargs) group是rc的分组,例如,lines.linewidth group是lines,for axes.facecolor,group是axes,等等。组也可以是组名称的列表或元组,例如(xtick,ytick),,,

例如将全局默认数字大小设置为 10X10 :

plt.rc('figure',figsize=(10,10))

第一个参数是你要自定义的组件,figure,axes,xtick,ytick,grid,legend 等,然后可以按照关键字参数的序列指定新参数,

font_options = {'family' : 'monospace', 'weight' : 'bold', 'size' : 'small'}
plt.rc('font', **font_options)

matplotlib.rcdefaults()恢复原来的设置。

。。。我发现了这根本不是给萌新看的 matplotlib 的教程,,,先浏览一遍吧,在去找找。。。。。。。。

matplotlib:颜色、标记和线类型,刻度、标签和图例,注释与子图加工,将图片保存到文件,matplotlib 设置相关推荐

  1. 【python学习】-matplotlib图形设置(线宽、标签、颜色、图框、线类型、图例大小位置、图框大小及像素等)

    写完毕业论文啦,终于可以有时间把学到的东西整理一下,今天总结一下关于图形绘制及让图好看的操作. python 图形绘制 一.图形绘制 1.1简单图形 1.2 改线粗.颜色.添加图例.点形状 1.3 颜 ...

  2. matplotlib绘制图表,设置刻度标签、最大最小刻度、字体大小,label位置、刻度轴箭头等

    matplotlib绘制图表,设置刻度标签.最大最小刻度.字体大小,label位置.刻度轴箭头等 1. 效果图 2. 源码 2.1 仅使用普通轴ax + fontdict 源码 2.2 使用mpl设置 ...

  3. Matplotlib设置刻度和刻度标签

    Matplotlib在我们之前的所有例子中都自动接管了轴上间隔点的任务.Matplotlib的默认刻度定位器和格式化器在很多常见情况下通常都足够了.可以明确提及刻度线的位置和标签以满足特定要求. xt ...

  4. python使用matplotlib可视化、自定义Y轴轴标签刻度旋转的角度(customize degree rotating axis tick labels in matplotlib)

    python使用matplotlib可视化.自定义Y轴轴标签刻度旋转的角度(customize degree rotating axis tick labels in matplotlib y aix ...

  5. python使用matplotlib可视化、自定义移除Y轴指定轴刻度标签(removing specific axis ticks in matplotlib y axis)

    python使用matplotlib可视化.自定义移除Y轴指定轴刻度标签(removing specific axis ticks in matplotlib y axis) 目录 python使用m ...

  6. python使用matplotlib可视化、自定义设置Y轴刻度标签字体的大小( setting axis ticks size in matplotlib y axis)

    python使用matplotlib可视化.自定义设置Y轴刻度标签字体的大小( setting axis ticks size in matplotlib y axis) 目录

  7. python使用matplotlib可视化、自定义移除X轴指定轴刻度标签(removing specific axis ticks in matplotlib x axis)

    python使用matplotlib可视化.自定义移除X轴指定轴刻度标签(removing specific axis ticks in matplotlib x axis) 目录 python使用m ...

  8. python3.7 matplotlib增加坐标说明_python matplotlib:如何在极坐标图中的轴和刻度标签之间插入更多空格?...

    @dabillox已经提到使用压裂kwarg来ax.set_thetagrids. 但是,正如您已经注意到的那样,您真正想要改变的是勾选标签的对齐方式,而不是刻度标签的整体径向位移. 另一方面,标签板 ...

  9. 绘制箱线图的标签python_利用Python - Matplotlib 绘制箱线图

    1.箱线图介绍 第一步:计算上四分位数,中位数,下四分位数(计算公式略). 第二步:计算上四分位数和下四分位数之间的差值,四分位数差. 第三步:绘制箱线图的上下范围,上限为上四分位数,下限为下四分位数 ...

最新文章

  1. Hadoop 安装详解--新手必备
  2. mysql中text格式化_mysql中char,varchar,text
  3. 安装Microsoft Hololens开发环境
  4. Ubuntu 16.04安装教程及虚拟机设置
  5. Kneser猜想与相关推广
  6. finditerable 转list_Iterable/Iterator 转 list
  7. Laravel Collection 常用方法(1)
  8. ffmpeg 的使用备忘
  9. java自动化测试成长日记-之CVS客户端和服务端安装和部署1:CVS服务端的配置和基本使用...
  10. Lesson 04:类和对象,类的成员变量、成员方法、构造方法
  11. 软件工程 speedsnail 冲刺8
  12. Rufus刻录大于4G系统镜像
  13. 7分钟学会匿名管道pipe()的使用(内附完整代码测试)
  14. LED灯具检验标准与方法
  15. 基于java+jsp房屋租赁管理系统
  16. Solidity ERC777标准
  17. 基于Java实现一个简单的记事本Android App
  18. [Android]按阶段编译Android kernel中的代码
  19. 个人计算机cpu型号,终于知道如何看懂一个电脑CPU型号了!
  20. (测试)Openbravo如何编写一个测试用例

热门文章

  1. Vue main.js各种写法和含义
  2. UE4打包设置和步骤(打最小的包)
  3. php获取中文拼音(含生僻字,多音字,音标)支持首字母,全拼
  4. Win10 自带【屏幕录制】功能(win + G)----(附带:录屏时没有声音,声音不清楚 问题解决;---提取视频中的音频)
  5. 自定义菜单的规则和作用?
  6. (翻译)峰终定律(Peak-end rule)
  7. 海信电视黑屏出现android,海信电视开机后黑屏?海信电视开机后黑屏的原因?
  8. 大数据技术与应用专业
  9. virtualapp-RefClass反射机制(转载)
  10. SQL效率轻优化【白丁水笔知其然】