文章目录
matplotlib绘图
绘图模板代码:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = [u'SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.grid(True)
plt.autoscale(tight=True)
from matplotlib import pylab #用matlab方法绘图
plt.plot(x,y)
plt.title('time series',fontsize=20)
plt.xlabel(u'time point',fontsize=14)
plt.ylabel(u' value',fontsize=14)
plt.legend(loc='best')
plt.savefig("name.jpg")
plt.show()
在线颜色选择器
https://www.atool99.com/colorpicker.php
plt.rcParams属性
plt(matplotlib.pyplot)使用rc配置文件来自定义图形的各种默认属性。
序号 属性 说明
1 plt.rcParams[’axes.unicode_minus’] = False 字符显示
2 plt.rcParams[’font.sans-serif’] = ‘SimHei’ 设置字体
线条样式:lines
3 plt.rcParams[’lines.linestyle’] = ‘-.’ 线条样式
4 plt.rcParams[’lines.linewidth’] = 3 线条宽度
5 plt.rcParams[’lines.color’] = ‘blue’ 线条颜色
6 plt.rcParams[’lines.marker’] = None 默认标记
7 plt.rcParams[’lines.markersize’] = 6 标记大小
8 plt.rcParams[’lines.markeredgewidth’] = 0.5 标记符号外缘的线宽
横、纵轴:xtick、ytick
9 plt.rcParams[’xtick.labelsize’] 横轴字体大小
10 plt.rcParams[’ytick.labelsize’] 纵轴字体大小
11 plt.rcParams[’xtick.major.size’] x轴最大刻度
12 plt.rcParams[’ytick.major.size’] y轴最大刻度
figure中的子图:axes
13 plt.rcParams[’axes.titlesize’] 子图的标题大小
14 plt.rcParams[’axes.labelsize’] 子图的标签大小
图像、图片:figure、savefig
15 plt.rcParams[’figure.dpi’] 图像分辨率
16 plt.rcParams[’figure.figsize’] 图像显示大小
17 plt.rcParams[’savefig.dpi’] 图片像素
配色参数
- matplotlib所有颜色组合表格整理版
https://blog.csdn.net/qq_41595507/article/details/107146256 - seaborn 调色板详细用法
https://www.cntofu.com/book/172/docs/9.md - 色卡对应参数值
https://www.cnblogs.com/zwt20120701/p/10872023.html - https://www.cnblogs.com/qianblue/p/10783261.html
- 设置背景颜色
set_facecolor
ax.set_facecolor(‘lightgrey’) - cmap
cmapname = 'seismic'
cmap = matplotlib.cm.get_cmap(cmapname)
# 设置使用的配色方案
https://matplotlib.org/tutorials/colors/colormaps.html
https://matplotlib.org/examples/color/colormaps_reference.html
cmap映射
图像大小和分辨率
fig = plt.figure(figsize=(width, height), dpi=dpi)
figsize 设置图形的大小,单位为英寸,dpi 为设置图形每英寸的点数。
线型参数
plt.title('time',fontsize=20)
plt.xlabel(u'hour',fontsize=14)
plt.ylabel(u'value',fontsize=14)
plt.plot(x,y,color='lightgrey',linewidth=1,linestyle='-',label='a',marker='x')
plt.plot(x,y,color='black',linewidth=1,linestyle='-',label='b',marker='.')
plt.legend(loc='best')
plt.show()
https://blog.csdn.net/dss_dssssd/article/details/84430024
标注
+plt.vlines(x,y_min,y_max)
画垂直线
+plt.hlines(y,x_min,x_max)
画水平线
plt.vlines(1.6, 0, 8, colors = “c”,linewidth=4,linestyles = “dashed”)。
plt.vlines(x=120,ymin=[0],ymax=max(n[‘合计’].values),linestyles=‘dashed’,color=‘r’)
plt.axhline(y=-1.96/np.sqrt(len(ts_log_diff)),linestyle=’–’,color=‘gray’)
plt.axhline(y=1.96/np.sqrt(len(ts_log_diff)),linestyle=’–’,color=‘gray’)
坐标轴参数
- 刻度位置、大小、颜色设置
ax.tick_params
ax.tick_params(direction='out', length=6, width=2, colors='r',
grid_color='r', grid_alpha=0.5)
- 设置坐标轴的实例
ax.xaxis.set_major_locator(x_major_locator)
- 设置刻度间隔
x_major_locator=MultipleLocator(1)
#把x轴的刻度间隔设置为1,并存在变量里
y_major_locator=MultipleLocator(10)
#把y轴的刻度间隔设置为10,并存在变量里
ax=plt.gca()
#ax为两条坐标轴的实例
ax.xaxis.set_major_locator(x_major_locator)
#把x轴的主刻度设置为1的倍数
ax.yaxis.set_major_locator(y_major_locator)
#把y轴的主刻度设置为10的倍数
plt.xlim(-0.5,11)
#把x轴的刻度范围设置为-0.5到11,因为0.5不满一个刻度间隔,所以数字不会显示出来,但是能看到一点空白
plt.ylim(-5,110)
-
刻度显示范围调整
-
plt.autoscale(tight=True)
自动调整图像显示的最佳比例。
plt.autoscale(axis=‘x’, tight=True) -
plt.xticks(loc,label)
设置x轴刻度,loc是数值显示的位置,label是显示的数值。
plt.xticks([w*7*24 for w in range(10)],['week %i' %w for w in range(10)])
plt.yticks([])
表示坐标轴y刻度不显示。plt.grid(True)
绘图显示网格。ax.spines
坐标轴位置设置
隐藏某些坐标轴:
ax.spines[‘right’].set_color(‘none’)
ax.spines[‘top’].set_color(‘none’)
移动坐标轴的默认位置:
ax.spines[‘bottom’].set_position((‘data’, 0))
ax.spines[‘left’].set_position((‘data’,0))
自动旋转日期坐标轴:
plt.gcf().autofmt_xdate() #x轴日期刻度旋转避免重叠
- ax.twinx()方法绘制
双Y轴折线图
- x轴日期显示格式设置
#设置日期的显示格式
date_format = mpl.dates.DateFormatter("%Y-%m-%d")
ax.xaxis.set_major_formatter(date_format)
# 设置x轴每个刻度的间隔天数
xlocator = mpl.ticker.MultipleLocator(5)
ax.xaxis.set_major_locator(xlocator)
# 为了避免x轴日期刻度标签的重叠,设置x轴刻度自动展现,并且45度倾斜
fig.autofmt_xdate(rotation = 45)
图例
legend参数:https://matplotlib.org/devdocs/api/_as_gen/matplotlib.pyplot.legend.html
参考:https://blog.csdn.net/chichoxian/article/details/101058046
图例在图形中位置调整:https://mp.weixin.qq.com/s?src=11×tamp=1618911024&ver=3020&signature=YvEH2UoHq0YVZtM0CWrLxnXWwsGjV8ZafTeYAeyY1pvHsqEf-dYuJchM5C-4JWfoTdcujv3egP-Pb89jaBUqn9B9iKh2mzE7Cds3TIyor1O1kVrJep3qHjlCQak8e5&new=1
形状与路径
- matplotlib.patches
绘图画布(面向对象式绘图)
Matplotlib 里的常用类的包含关系为 Figure -> Axes -> (Line2D, Text, etc.)一个Figure对象可以包含多个子图(Axes),在matplotlib中用Axes对象表示一个绘图区域,可以理解为子图。
可以使用subplot()快速绘制包含多个子图的图表,它的调用形式如下:
subplot(numRows, numCols, plotNum)
参考
- plt.tight_layout()
解决子图坐标轴和标题重叠 - plt.sca()
Set the current Axes instance to ax.如plt.sca(ax1)是选择子图ax1。 - plt.gca()
get current axes 获取当前的绘图空间
绘制矩阵热力图
matshow
函数
import matplotlib.pylab as plt
import numpy as np
a=np.random.randint(1,100,size=(10,10))
plt.matshow(a)
日历热力图
Calendar Heat Map
import matplotlib as mpl
import calmap
#Import Data
df = pd.read_csv("https://raw.githubusercontent.com/selva86/datasets/master/yahoo.csv",
parse_dates=['date'])
df.set_index('date', inplace=True)
#Plot
plt.figure(figsize=(16,10), dpi= 80)
calmap.calendarplot(df['2014']['VIX.Close'], fig_kws={'figsize': (16,10)}, yearlabel_kws={'color':'black', 'fontsize':14}, subplot_kws={'title':'Yahoo Stock Prices'})
plt.show()
误差线
- 柱状图误差线
yerr关键字参数:可传入包含标准差的列表
error_kw={} , 接收显示误差线的关键字函数
eColor:指定误差线的颜色
capsize :指定误差线两头横线的宽度
alpha:控制彩色条状图的透明度, 范围0-1
plt.bar(index, values, yerr = std, error_kw = {'ecolor' : '0.2', 'capsize' :6}, alpha=0.7)
- 曲线阴影线
fill_between
方法。
plt.plot(xdata, ydata, 'or')
plt.plot(xfit, yfit, '-', color='gray')
#颜色为灰色,设置透明度为0.2
plt.fill_between(xfit, yfit - dyfit, yfit+dyfit, color='gray', alpha=0.2)
#绘制上下两条线并形成阴影面积
- 误差棒
matplotlib.pyplot.errorbar(x, y, yerr=None, xerr=None, fmt=’’, ecolor=None, elinewidth=None, capsize=None, barsabove=False, lolims=False, uplims=False, xlolims=False, xuplims=False, errorevery=1, capthick=None, *, data=None, **kwargs)
参考区
- plt.axvspan(xmin=1.0, xmax=2.0, facecolor=“y”, alpha=0.3)
绘制垂直于x轴的参考区域。
plt.axvspan(data.index[-1], forecast.index[-1], alpha=0.5, color='lightgrey')
其他各类图形
https://blog.csdn.net/weixin_39851977/article/details/112325172
seaborn绘图
中文文档
https://www.cnblogs.com/dan-baishucaizi/p/9467064.html
change-font-size
两个很好的绘图博客教程:
http://queirozf.com/entries/matplotlib-examples-displaying-and-configuring-legends
https://www.machinelearningplus.com/plots/top-50-matplotlib-visualizations-the-master-plots-python/
绘图风格设置
https://baijiahao.baidu.com/s?id=1618246258758214553&wfr=spider&for=pc
- matplotlib最有价值的五十个图表
https://blog.csdn.net/Yuyh131/article/details/102523867
#SCI期刊绘图
SciencePlots绘图渲染包
导出高分辨率图片
plt.savefig("分布",dpi=750, bbox_inches = 'tight')
自定义绘图设置
https://www.cnblogs.com/lemonbit/p/7419851.html
- 正射投影绘图
https://www.csdn.net/gather_27/MtjaYgxsNDk0ODgtYmxvZwO0O0OO0O0O.html
pyecharts绘图
中文文档 http://pyecharts.org/#/zh-cn/basic_charts
各类型图表绘图参考
https://zhuanlan.zhihu.com/p/220345912?utm_source=com.alpha.pinbox
ipyvolume三维绘图
https://pypi.org/project/ipyvolume/
python数据可视化技巧
https://zhuanlan.zhihu.com/p/313462427
这篇文章合集写的非常好。
uber vis 可视化库
https://medium.com/vis-gl
geopanda地圖匯總
https://my.oschina.net/jiangroubao/blog/4544740
pandas-alive
绘制各种动图的python库。
https://jackmckew.github.io/pandas_alive/