- 前言
- 一、数据相差太大,无法突出重点数据,怎么办?
- 二、可视化学习圈子是干什么的?
- 三、系统学习可视化
- 四、猜你喜欢
前言
今天是我的可视化课程上线的第233天,目前学员417人,每篇原创公众号都会记录这个人数,用来督促和激励我的原创内容。目前课程的主要方向是 科研、统计、地理相关的学术性图形绘制方法,后续也会增加商务插图、机器学等、数据分析等方面的课程。
今天是我的可视化学习社群上线的第13天,目前学员118人,可视化学习社区以我的书籍《科研论文配图绘制指南-基于Python》为基础进行拓展,提供课堂式教学视频,还有更多拓展内容,可视化技巧远超书籍本身,书籍修正和新增都会分享到圈子里面~~
参与课程或者圈子的你将获取到:学员答疑、可视化资源分享、可视化技巧补充、可视化业务代做(学员和甲方对接)、副业交流、提升认知等等。
数据相差太大,老是无法突出重点数据,怎么办?
又到了我们学员的提问环节啦,如下:
学员提问
其实这个问题,在可视化绘制需求中经常会遇到,按要求绘制出图形结果后,又因为每组数据值相差太大,到值绘制的图形结果非常难看,但想要解决这个问题,只需要将刻度轴 进行截断处理一下就可以了。下面我就给大家介绍绘制截断刻度轴的两种方法(仅限Python语言)
- 方法一:Matplotlib原生方法 Matplotlib官网提供了绘制截断坐标轴的方法案例,如下:
import matplotlib.pyplot as plt
import numpy as np
np.random.seed(19680801)
pts = np.random.rand(30)*.2
# Now let's make two outlier points which are far away from everything.
pts[[3, 14]] = .8
# If we were to simply plot pts, we'd lose most of the interesting
# details due to the outliers. So let's 'break' or 'cut-out' the y-axis
# into two portions - use the top (ax1) for the outliers, and the bottom
# (ax2) for the details of the majority of our data
fig, (ax1, ax2) = plt.subplots(2, 1, sharex=True)
fig.subplots_adjust(hspace=0.05) # adjust space between axes
# plot the same data on both axes
ax1.plot(pts)
ax2.plot(pts)
# zoom-in / limit the view to different portions of the data
ax1.set_ylim(.78, 1.) # outliers only
ax2.set_ylim(0, .22) # most of the data
# hide the spines between ax and ax2
ax1.spines.bottom.set_visible(False)
ax2.spines.top.set_visible(False)
ax1.xaxis.tick_top()
ax1.tick_params(labeltop=False) # don't put tick labels at the top
ax2.xaxis.tick_bottom()
# Now, let's turn towards the cut-out slanted lines.
# We create line objects in axes coordinates, in which (0,0), (0,1),
# (1,0), and (1,1) are the four corners of the axes.
# The slanted lines themselves are markers at those locations, such that the
# lines keep their angle and position, independent of the axes size or scale
# Finally, we need to disable clipping.
d = .5 # proportion of vertical to horizontal extent of the slanted line
kwargs = dict(marker=[(-1, -d), (1, d)], markersize=12,
linestyle="none", color='k', mec='k', mew=1, clip_on=False)
ax1.plot([0, 1], [0, 0], transform=ax1.transAxes, **kwargs)
ax2.plot([0, 1], [1, 1], transform=ax2.transAxes, **kwargs)
plt.show()
Matplotlib Broken Axis 案例
「注」:Matplotlib绘制截断坐标轴,其本质还是多子图的灵活使用。
- 方法二:brokenaxes工具包绘制
如果觉得Matplotlib绘制截断坐标轴的方法比较不好理解,那可以直接使用brokenaxes这个拓展工具绘制即可。
brokenaxes包在 Python 中是一个非常有用的绘图工具,它具有以下特点:
- 「坐标轴截断功能」:
brokenaxes
包的主要特点是可以轻松地创建具有截断轴的图形。通过指定需要截断的区域,可以将重要数据突出显示,使得图表更加清晰和易读。 - 「灵活性」:该包提供了许多自定义选项,允许用户根据自己的需求进行调整。可以设置截断轴的位置、截断点的样式、标签的位置等。
- 「与 Matplotlib 兼容」:
brokenaxes
包是基于 Matplotlib 构建的,因此可以与 Matplotlib 的其他功能完美配合使用。你可以在brokenaxes
坐标轴上使用 Matplotlib 的各种绘图函数和方法。 - 「支持多个截断区域」:
brokenaxes
包允许在同一个图表中设定多个截断区域。这意味着你可以在不同的位置截断坐标轴,并将不同的数据范围放大显示。 - 「支持子图」:该包还支持创建带有子图的图形。你可以在每个子图中单独设置截断轴,实现更复杂的图形布局。
- 「简单易用」:使用
brokenaxes
包非常简单,只需几行代码即可实现截断轴的功能。它提供了直观的接口和易于理解的参数,使得绘图过程更加方便快捷。
总之,brokenaxes
包为 Python 提供了一个方便的工具来创建具有截断轴的图形。它的灵活性、与 Matplotlib 的兼容性以及对多个截断区域和子图的支持,使得用户可以根据自己的需要轻松创建各种复杂的图表。无论是在学术研究、数据分析还是数据可视化领域,brokenaxes
都是一个强大而实用的工具。
下面给出几个brokenaxes
工具包绘制的可视化案例:
import matplotlib.pyplot as plt
from brokenaxes import brokenaxes
import numpy as np
fig = plt.figure(figsize=(5, 2))
bax = brokenaxes(xlims=((0, .1), (.4, .7)), ylims=((-1, .7), (.79, 1)), hspace=.05)
x = np.linspace(0, 1, 100)
bax.plot(x, np.sin(10 * x), label='sin')
bax.plot(x, np.cos(10 * x), label='cos')
bax.legend(loc=3)
bax.set_xlabel('time')
bax.set_ylabel('value')
brokenaxes案例一
代码语言:javascript复制from brokenaxes import brokenaxes
from matplotlib.gridspec import GridSpec
import numpy as np
sps1, sps2 = GridSpec(2,1)
bax = brokenaxes(xlims=((.1, .3), (.7, .8)), subplot_spec=sps1)
x = np.linspace(0, 1, 100)
bax.plot(x, np.sin(x*30), ls=':', color='m')
x = np.random.poisson(3, 1000)
bax = brokenaxes(xlims=((0, 2.5), (3, 6)), subplot_spec=sps2)
bax.hist(x, histtype='bar')
brokenaxes案例二
brokenaxes案例三
更多关于该工具包的使用,可参考brokenaxes官网[1]
可视化学习圈子是干什么的?
科研论文配图书籍学习圈子主要通过以下几个方面,给大家带来比纸质书籍更丰富的学习内容:
- 直播教学,和读者零距离互动交流
- 及时修正勘误和定期新增绘制知识点
- 拓展衍生,绘图知识点远超书籍本身
- 直播视频 拓展资料 答疑,学习更高效
「PS」:我们直播教学内容为课堂式教学,原作者带着大家对书籍一章、一节、一页的进行教学。而且直播的视频都会通过剪辑后整理成课程,圈子中的同学可以免费、反复观看。当然,新增内容和定期答疑,直播也是如此。
- 为何会有这个书籍学习社群?除了上面介绍到的原因之外,无门槛的微信群难免会鱼龙混杂,问题和质量都无法得到保证,而且一些关键问题经常被淹没,且没有沉淀价值。
- 随着添加我微信的人日益增多,向我提问的人也越来越多,随便回答一下就太不负责任了;不回答也不是很好;如果都仔细回答,我也有自己的工作并且确实很忙,真的有点心有余而力不足!所以我才会建立这么一个渠道来沉淀我的可视化技巧和分享经验,以及给大家提供一个坚持学习的平台。
系统学习可视化
当然,在学习数据可视化的道路上,你也有很多问题得不到解答,也可以加入我们的可视化课程后,在学员群里和大家一起谈论,一起进步,或者直接向我提问。如果我觉得你的问题很具有普适性,我会把它写成文章发布在公众号上,让更多人看到,有关我们数据可视化系列课程的服务内容,可以参考下面的 阅读原文。
猜你喜欢
Xarray,不用ArcGIS,所有地理空间绘图全搞定...
Nature都推荐的箱线图(Boxplot)绘制工具长啥样?免费、在线、灵活操作...?
集成Matplotlib、Bokeh、Plotly!这个交互式可视化工具这么强的吗?
完美解决Matplotlib绘图中、英文字体混显问题..
MATLAB绘图不好看?!不是,你是还没发现这几个工具包吧..
不是,这个地理数据工具这么强的吗?数据处理、可视化它都行..
这种环形图太难画?!带你一行代码搞定..
这种图太多人问了,绘制方法真的很简单..
不是,这封面图这么多人问的吗?教程来了
不用Seaborn,这个工具也能绘制超炫的统计图形···
NetworkX,网络结构图最强绘制工具·····
所有科研地理图形它都有,这个工具有点猛····
Nature、Science配图可以一键绘制?!我懵了···
节后第一天,就因为论文配图,被导师怼了一上午·····
plotnine,打死不学R语言, 我可以用Python到40岁.....
TUEplots,一天100张论文配图,导师惊了···
参考资料
[1]
brokenaxes官网: 是指掌握多种技能,并能利用多种技能独立完成产品的https://github.com/bendichter/brokenaxes。