用 Pyecharts 绘制足迹地图

之前上网发现一个好玩的在线工具:中国制霸生成器,可以标记去过的地方,制作自己的足迹地图。 但这个工具只能标记省级行政区,有些颗粒度太粗,比如去过郫县,在地图上就会体现为去过四川。于是想看看有其他工具没有。然后发现 Pyecharts 可以绘制地图,设置一下就能生成足迹地图,而且生成的是可以交互的地图 html 文件,不是图片。如果想要图片进行分享,截个图就 OK。 Pyecharts是个Python的绘图库,除了地图,还能绘制其他很多类型的可视化图像,具体可参考Pyechart官网。 ...

2023年8月13日 · 17 分钟 · tsingk

用 seaborn 绘制数据分布统计图

数据文件为 Libreoffice 编制的 ods 类型,为了能直接读取 ods 文件生成 dataframe 格式数据,安装 pandas_ods_reader 包。 1 pip install pandas_ods_reader 然后导入相关库,读取数据。 1 2 3 4 5 6 7 import seaborn as sns import pandas as pd from pandas_ods_reader import read_ods %matplotlib inline ffftime = read_ods('dataset.ods', 1) 1 2 3 # 挑取目标列数据 thedata = ffftime.loc[ffftime['人种']=='黄', ['连续输出1']] print(len(thedata)) 195 目标列中一共有 195 个待分析数据。对这些数据绘制直方图,查看各数据段内的分布占比,图中柱宽为 2。 1 2 3 4 5 6 7 8 9 # 绘制密度分布图 rc = {'axes.unicode_minus': False} sns.set(context='notebook', style='ticks', font='simhei', rc=rc) ax = sns.histplot(data=thedata, x='连续输出1', binwidth=2, stat='proportion') x = range(0, 50, 5) ax.set_xticks(x) ax.set_ylabel("占比", fontsize=14) ax.set_xlabel("连续输出时间/min", fontsize=14) ax.set_title('连续输出时间样本统计', fontsize=14) 从占比直方图可以看出,5~7min 为占比最多区间,大约的18.5%样本落在此区间。 ...

2022年11月21日 · 2 分钟 · tsingk

设置 seaborn 绘图中的字体及字体大小

1 设置 seaborn 绘图中的字体 Seaborn 基于 Matplotlib,Matplotlib 基于 Python,Python 运行于电脑系统中。 因此,要在 Seaborn 中使用某款字体,该字体要满足以下条件: 字体已安装在系统中; Python 能检索到此字体; Matplotlib 字体缓存中能检索到此字体; 绘图时在 Seaborn 中设置使用该字体。 1.1 在电脑上安装字体 以「文泉驿微米黑」字体为例,下载到的字体安装包为「文泉驿微米黑.ttf」,双击会自动打开系统自带的字体管理器,点击安装既可。 ...

2021年11月24日 · 5 分钟 · tsingk

学习 seaborn [07]: 绘制累积条形图

使用 seaborn 绘制累积条形图 最近想看下某地区近几年降雨量如何变化,获得的数据是分年分月的,打算绘制按年份累积每月降雨量的条形图。搜索教程,主要有以下几种方法。 方法1:使用 seaborn 的 barplot() 函数,在 x 相同位置,分别绘制112月累积量、111月累积量、1~10月累积量,以此类推直至1月降雨量。每次绘制使用颜色不同,后绘制的相当于把前绘制的条状遮住一部分。需要调用12次 barplot() 函数。参考文章点这里 方法2:使用 matplotlib 的 bar() 函数,按年分别绘制每月的降雨量条形图,通过参数bottom指定所绘制的月份条形图下方是哪个月的条形图,相当于一层一层的柱子码起来。需要调用12次 bar() 函数。参考文章点这里 方法3:使用 seaborn 的 histplot() 函数,设置 multiple 参数为 stack,weights 参数为需要累积的量,既可绘制累积条形图。只需条用1次 histplot() 函数。参考文章点这里。这篇文章另外还介绍了如何使用 matplotlib、pandas、plotnine、altair 绘制累积条形图。 前两种方法太繁琐,采用第3种方法。搜相关教程有个感悟,要想快速准确找到资料,搜英文文章,或者直接在 seaborn 官方教程找。 ...

2021年11月8日 · 3 分钟 · tsingk

学习 pandas [02]: 二进制操作

title: 学习 pandas [02]: 二进制操作 slug: er-jin-zhi-cao-zuo date: 2021-1-23 tags: Pandas Jupyter python category: 数据分析 link: description: type: text 二进制操作 Pandas数据结构之间执行二进制操作,要注意下列两个关键点: DataFrame与Series之间的广播机制; 计算中的缺失值处理。 加、减、乘、除、取模 DataFrame支持以下运算操作中对Series进行广播: add():加 sub():减 mul():乘 div():除 radd() rsub() 在以上方法使用中,通过axis参数,指定沿index或columns广播。 ...

2021年1月23日 · 4 分钟 · tsingk

学习 pandas [01]: 数据结构

title: 学习 pandas [01]: 数据结构 slug: series-and-dataframe date: 2020-12-27 tags: Pandas Jupyter python category: 数据分析 link: description: type: text 数据结构 pandas的数据类型主要有: Series,类似一维数组 DataFrame,类似二维数组 Series 创建Series 1 pd.Series(data, index=index) data:可以是字典、一维数组、标量 index:索引列表,可以理解为行标签,根据Data的类型而不同。 通过字典创建Series 1 2 3 4 5 6 7 import numpy as np import pandas as pd # 通过字典创建,自动采用键值作为索引,若不指定index,则顺序同字典 d = {'b': 1, 'a': 0, 'c': 2} s = pd.Series(d) s b 1 a 0 c 2 dtype: int64 1 2 3 4 # 通过字典创建,自动采用键值作为索引,若指定index(包含键值),则顺序同index # index中若含有字典中不存在的键值,则Series中对应的值为NaN s = pd.Series(d, index=['a', 'b', 'c', 'd']) s a 0.0 b 1.0 c 2.0 d NaN dtype: float64 通过一维数组创建Series 1 2 3 4 5 l = np.random.randn(6) # 若不指定index,则自动生成数值型索引 s = pd.Series(l) s 0 0.215224 1 0.803700 2 1.141428 3 0.526450 4 0.577533 5 1.051918 dtype: float64 1 2 3 # 若指定index,则长度必须与数组相同 s = pd.Series(l, index=['a', 'b', 'c', 'd', 'e', 'f']) s a 0.215224 b 0.803700 c 1.141428 d 0.526450 e 0.577533 f 1.051918 dtype: float64 通过标量值创建Series 此方法创建出的Series,每行值都相同。 ...

2020年12月27日 · 4 分钟 · tsingk

学习 seaborn [06]: 设置中文显示

2020年12月16日 · 0 分钟 · tsingk

学习 seaborn [05]: 调色板

title: 学习 seaborn [05]: 调色板 slug: color-seaborn date: 2020-12-14 tags: seaborn python category: 数据分析 link: description: type: text 选择调色板 调色板是一组颜色搭配方案,绘图时候程序从中选取颜色进行数据可视化。调色板中颜色之间的色相、饱和度、明度等差异,区别出不同系列的数据关系,因此调色板比其他元素更加影响绘图的视觉效果。 seaborn提供了一些现成的配色方案,也可以利用其提供的函数自定义调色板。 调色板分类 定性调色板:一组在视觉上有差异的颜色,用于区分不具有内在顺序的离散数据; 顺序调色板:一组视觉温度递增或递减的颜色,一般是单一色相,也可以是多种色相,用于当数据集的范围从相对低值(不感兴趣)到相对高值(很感兴趣)时; 发散调色板:一组颜色的中间位置颜色的视觉温度最亮或最暗,然后分别向两端递增或递减,用于当数据集的低值和高值都很重要,且数据集中有明确定义的中点时。 生成调色板的函数 可生成三种调色板的函数 color_palette():生成调色盘,接受所有的seaborn调色板或者matplotlib Colormap或者Color Brewer库的配色方案,返回RGB元组的列表; set_palette():接受与color_palette()相同参数,设置所有图像的默认配色方案; xkcd_rgb():使用xkcd颜色名字设置单一颜色; xkcd_palette():使用xkcd颜色名字生成调色板,适用于各种调色板; choose_colorbrewer_palette():通过交互式组件辅助进行Color Brewer库的配色方案选择,适用于各种调色板,只能在Jupyter Notebook中使用; 用于生成定性调色板的函数 hls_palette():使用hls颜色空间生成间距相等的颜色(色调变化,明度和饱和度不变),适用于定性调色板; husl_palette():使用HSLuv颜色空间生成间距相等的颜色,比上述hls更符合人眼视觉感受,适用于定性调色板; 用于生成顺序调色板的函数 cubehelix_palette():使用cubehelix调色板系统生成配色方案,适合黑白打印,且对色盲友好,适用于顺序调色板; choose_cubehelix_palette():通过交互式组件辅助进行cubehelix调色板的配色方案选择,只能在Jupyter Notebook中使用; light_palette()和dark_palette():指定一个颜色,会由明向暗或由暗向明生成一组颜色,适用于顺序调色板; 用于生成发散调色板的函数 diverging_palette():用来创建发散调色板; choose_diverging_palette():通过交互式组件辅助进行发散调色板的配色方案选择,使用HSLuv颜色空间,只能在Jupyter Notebook中使用; 生成调色板的方式 seaborn中生成调色板的方式大致有三种: ...

2020年12月14日 · 4 分钟 · tsingk

学习 seaborn [04]: 修改样式、移动座标轴

title: 学习 seaborn [04]: 修改样式、移动座标轴 slug: beautify-seaborn date: 2020-12-11 16:23:05 tags: seaborn python category: 数据分析 link: description: type: text 控制图像的美学样式 相比与matplotlib详细的样式设置,seaborn提供了成套的样式主题可供直接使用,同时提供高级设置接口供用户自定义主题。 以装修房子比喻,用matplotlib就像全部考自己装修,窗台、地砖、墙壁等细节都要自己考虑,费时费力但高度可定制化。而用seaborn相当于从装修公司已设计好的装修方案中挑选一个,然后还能在此基础进行部分的修改定制。 ...

2020年12月11日 · 4 分钟 · tsingk

学习 seaborn [03]: 线性回归图

title: 学习 seaborn [03]: 线性回归图 slug: lmplot date: 2020-12-9 tags: seaborn python category: 数据分析 link: description: type: text 线性关系可视化 此线性可视化并非统计关系中的折线图,而是excel做图中的趋势线概念,对x、y关系进行线性拟合得到关系式,对关系式的绘图。 seaborn的线性可视化不直接提供拟合关系式的各具体参数,只绘制出趋势线和置信区间,从而引导和帮助进行数据关系探索。 主要用到两个函数: lmplot():FacetGrid级函数,可绘制多子图;将data作为必须参数,x和y变量必须被指定为字符串。 regplot():轴级函数。x和y可以是简单的 numpy 数组,pandas Series对象,或者作为对传递给data的 pandas DataFrame对象。 1 2 3 4 5 6 7 8 import seaborn as sns import pandas as pd import numpy as np %matplotlib inline sns.set() tips = pd.read_csv('seaborn-data-master/tips.csv') display(tips) total_bill tip sex smoker day time size 0 16.99 1.01 Female No Sun Dinner 2 1 10.34 1.66 Male No Sun Dinner 3 2 21.01 3.50 Male No Sun Dinner 3 3 23.68 3.31 Male No Sun Dinner 2 4 24.59 3.61 Female No Sun Dinner 4 ... ... ... ... ... ... ... ... 239 29.03 5.92 Male No Sat Dinner 3 240 27.18 2.00 Female Yes Sat Dinner 2 241 22.67 2.00 Male Yes Sat Dinner 2 242 17.82 1.75 Male No Sat Dinner 2 243 18.78 3.00 Female No Thur Dinner 2 244 rows × 7 columns ...

2020年12月9日 · 3 分钟 · tsingk