前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据相差太大,无法突出重点数据!?这样干就行...

数据相差太大,无法突出重点数据!?这样干就行...

作者头像
DataCharm
发布2023-11-24 15:48:48
2050
发布2023-11-24 15:48:48
举报
  • 前言
    • 一、数据相差太大,无法突出重点数据,怎么办?
    • 二、可视化学习圈子是干什么的?
    • 三、系统学习可视化
    • 四、猜你喜欢

前言

今天是我的可视化课程上线的第233天,目前学员417人,每篇原创公众号都会记录这个人数,用来督促和激励我的原创内容。目前课程的主要方向是 科研、统计、地理相关的学术性图形绘制方法,后续也会增加商务插图、机器学等、数据分析等方面的课程。

今天是我的可视化学习社群上线的第13天,目前学员118人,可视化学习社区以我的书籍《科研论文配图绘制指南-基于Python》为基础进行拓展,提供课堂式教学视频,还有更多拓展内容,可视化技巧远超书籍本身,书籍修正和新增都会分享到圈子里面~~

参与课程或者圈子的你将获取到:学员答疑、可视化资源分享、可视化技巧补充、可视化业务代做(学员和甲方对接)、副业交流、提升认知等等。

数据相差太大,老是无法突出重点数据,怎么办?

又到了我们学员的提问环节啦,如下:

学员提问

其实这个问题,在可视化绘制需求中经常会遇到,按要求绘制出图形结果后,又因为每组数据值相差太大,到值绘制的图形结果非常难看,但想要解决这个问题,只需要将刻度轴 进行截断处理一下就可以了。下面我就给大家介绍绘制截断刻度轴的两种方法(仅限Python语言)

  • 方法一:Matplotlib原生方法 Matplotlib官网提供了绘制截断坐标轴的方法案例,如下:
代码语言:javascript
复制
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 中是一个非常有用的绘图工具,它具有以下特点:

  1. 「坐标轴截断功能」brokenaxes 包的主要特点是可以轻松地创建具有截断轴的图形。通过指定需要截断的区域,可以将重要数据突出显示,使得图表更加清晰和易读。
  2. 「灵活性」:该包提供了许多自定义选项,允许用户根据自己的需求进行调整。可以设置截断轴的位置、截断点的样式、标签的位置等。
  3. 「与 Matplotlib 兼容」brokenaxes 包是基于 Matplotlib 构建的,因此可以与 Matplotlib 的其他功能完美配合使用。你可以在 brokenaxes 坐标轴上使用 Matplotlib 的各种绘图函数和方法。
  4. 「支持多个截断区域」brokenaxes 包允许在同一个图表中设定多个截断区域。这意味着你可以在不同的位置截断坐标轴,并将不同的数据范围放大显示。
  5. 「支持子图」:该包还支持创建带有子图的图形。你可以在每个子图中单独设置截断轴,实现更复杂的图形布局。
  6. 「简单易用」:使用 brokenaxes 包非常简单,只需几行代码即可实现截断轴的功能。它提供了直观的接口和易于理解的参数,使得绘图过程更加方便快捷。

总之,brokenaxes 包为 Python 提供了一个方便的工具来创建具有截断轴的图形。它的灵活性、与 Matplotlib 的兼容性以及对多个截断区域和子图的支持,使得用户可以根据自己的需要轻松创建各种复杂的图表。无论是在学术研究、数据分析还是数据可视化领域,brokenaxes 都是一个强大而实用的工具。

下面给出几个brokenaxes工具包绘制的可视化案例:

代码语言:javascript
复制
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。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-11-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DataCharm 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 数据相差太大,老是无法突出重点数据,怎么办?
  • 可视化学习圈子是干什么的?
  • 系统学习可视化
  • 猜你喜欢
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档