学习、修改、参考自:
https://mp.weixin.qq.com/s/lP_zc3moRpoccBYAWIFR1Q

import pandas as pd
import numpy as np
from palettable.colorbrewer.colorbrewer import get_map
import matplotlib.pyplot as plt
# 正常显示中文标签
plt.rcParams['font.sans-serif'] = ['SimHei']
# 正常显示负号
plt.rcParams['axes.unicode_minus'] = Falsevalues = np.arange(10,0,-1)*100 # 从大到小排序
labels = ["北京","广东", "浙江", "江苏", "四川", "湖北", "上海", "深圳", "重庆", "天津"]
# 计算坐标
width = 2*np.pi/len(labels)
theta = np.linspace(0, 2*np.pi, len(labels), endpoint=False) + width/2
# 色板为Spectral
colors = get_map("Spectral", "diverging", len(labels), reverse=True).hex_colors
#绘图
fig = plt.figure(figsize=(8, 8), dpi=100)
ax = fig.add_subplot(111, projection="polar")
ax.bar(theta, values, width=width, color=colors, alpha=0.8)
# 添加文字标签
for i,j in zip(range(len(labels)),colors):ax.text(theta[i], values[i] + 120,"{}\n{}亿".format(labels[i], values[i]),fontsize=14-i*2/3, color=j, va="center", ha="center")
ax.set_theta_direction(1) # 设置旋转方向
ax.set_theta_offset(np.pi/1) # 设置旋转起点
ax.set_axis_off() # 隐藏坐标轴
ax.set_title("折扇图", fontsize=20);

import pandas as pd
import numpy as np
from palettable.colorbrewer.colorbrewer import get_map
import matplotlib.pyplot as plt
# 正常显示中文标签
plt.rcParams['font.sans-serif'] = ['SimHei']
# 正常显示负号
plt.rcParams['axes.unicode_minus'] = False# 外圈
labels1 = ['重庆', '北京', '天津', '上海']
values1 = [200, 160, 150, 100]# 内圈
labels2 = [['渝北区', '江北区', '巴南区'], ['朝阳区', '西城区', '丰台区'],['和平区', '河东区', '河西区'],['黄浦区', '长宁区', '虹口区']]
values2 = [[100, 60, 40], # 从大到小排序[100, 40, 20],[100, 40, 10],[60, 20, 20]]colors1 = ['#177cb0', '#9d2933', '#0aa344', '#E6550D']
colors2 = [['#2894FF', '#84C1FF', '#C4E1FF'],['#db5a6b', '#f47983', '#ffb3a7'],['#73C08B','#A8E0B7', '#CBEAD1'],['#ff7500', '#FDAE6B', '#FFE4B5']]# 绘图
fig, ax = plt.subplots(figsize=(9,9))
# 绘制外层饼图
ax.pie(x=values1, labels=labels1, explode=[0.01]*len(labels1),colors=colors1, #颜色startangle=180,labeldistance=1.06,textprops={'fontsize': 20},wedgeprops={'alpha': 0.8, 'width': 0.2})
# 内层饼图
ax.pie(x=flatten(values2), labels=flatten(labels2), # 标签explode=[0.01]*len(flatten(labels2)),colors=flatten(colors2), # 颜色labeldistance=0.75,startangle=180, radius=0.79, # 内圈距外圈距离textprops={'va': 'center', 'ha': 'center','fontsize': 14},rotatelabels=True,wedgeprops={'alpha': 0.8, 'width': 0.4})
fig.set_facecolor('white');

import pandas as pd
import numpy as np
from scipy import stats
from matplotlib import ticker
from palettable.colorbrewer.colorbrewer import get_map
import matplotlib.pyplot as plt
# 正常显示中文标签
plt.rcParams['font.sans-serif'] = ['SimHei']
# 正常显示负号
plt.rcParams['axes.unicode_minus'] = Falsedef plot_ridges(ax, X, Y1, buttoms, labels, colors, **kw):if np.array(X).ndim == 1:X = [X]*len(Y1) # X可以与Y形状相同,也可以是1个序列n = 0for y in Y1:y = np.array(y) - np.min(np.array(y)) # 去除基线# fill_between将曲线下面的部分进行填色# X[n] 覆盖的区域# y + buttoms[n] 覆盖的下限ax.fill_between(X[n], y + buttoms[n], buttoms[n], where=y>0, color=colors[n], label=labels[n], **kw)ax.plot(X[n], y + buttoms[n], color=colors[n])n += 1return axX = np.arange(-8, 8, 0.1) # 既可以是1个序列,也可以多个序列组成的列表
# 多个序列组成的列表
# apply_along_axis将arr数组的每一个元素经过func函数变换形成的一个新数组
# numpy.apply_along_axis(func, axis, arr, *args, **kwargs)
# fun = lambda x: stats.norm(-4,1).pdf(x)
# axis 作用于行还是列
# arr 要变换的数组
# fun中的scipy.stats.norm函数 可以实现正态分布,pdf : 概率密度函数
# stats.norm(0,1)表示均值是0,方差是1的正态分布
Y = [np.apply_along_axis(lambda x: stats.norm(0,1).pdf(x), 0, X)*2,  # 方差都为1np.apply_along_axis(lambda x: stats.norm(-2,1).pdf(x), 0, X)*2, np.apply_along_axis(lambda x: stats.norm(-4,1).pdf(x), 0, X)*2, np.apply_along_axis(lambda x: stats.norm(2,1).pdf(x), 0, X)*2, np.apply_along_axis(lambda x: stats.norm(4,1).pdf(x), 0, X)*2]colors = get_map("Set2", "qualitative", len(Y), reverse=False).hex_colors # 设置颜色
buttoms = [0, 1, 2, 3, 4] # 设置基线偏移,长度与Y一致(将每一个分布图分离)
labels = ["y1", "y2", "y3", "y4", "y5"] # 图例标签,长度与Y一致# 绘图
fig, ax = plt.subplots(figsize=(10, 10))
plot_ridges(ax, X, Y, buttoms, labels, colors)
ax.legend(loc='best', title="图例")# 图例
ax.yaxis.set_major_locator(ticker.NullLocator()) # 隐藏刻度
ax.set_title("山峦图", fontdict={'fontsize': 15},backgroundcolor='#ffc773',fontweight='bold',color='white')


更多请查看参考文章

绘图杂记【21】Python 绘制折扇图、嵌套环图、山峦图相关推荐

  1. 可视化:python绘制多组多维数据雷达图

    超过3维的数据用雷达图可以十分直观地展示.本文实践过程中以灰度共生矩阵的4项常用指标为例. python绘制多组多维数据雷达图 所使用的数据如下所示:每一行是一个样本,每个样本有4维特征(列). 封装 ...

  2. 可视化篇(四)——— python绘制双y轴、箱线图、概率分布三种图形及案例

    可视化篇(四)--- python绘制双y轴.箱线图.概率分布三种图形及案例 摘要 绘制双y轴图形 绘制箱线图 绘制概率分布图 摘要 本文演示了如何通过python绘制双y轴.箱线图.概率分布三种图形 ...

  3. python双坐标轴箱线图,python绘制双y轴、箱线图、概率分布三种图形及案例

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 本文演示了如何通过python绘制双y轴.箱线图.概率分布三种图形,并给出了具体案例源代码供 ...

  4. 用Python绘制各国新冠肺炎确诊病例发展趋势图

    前两天看到英国金融时报上面有两张各国新冠肺炎确诊和死亡病例的发展趋势图,我觉得这张图信息量挺大的,能看出来各国在应对疫情方面措施的效果,尤其是前一段网络上有太多情绪化而缺乏数据支持的文字,当然也有很多 ...

  5. 十分钟用 Python 绘制了近十年编程语言趋势图

    先来个视频体验一下效果,文末还有视频教程 1. 分析 我们需要获取数据,所以第一步需要从tiobe抓取近几年的top编程语言的占比情况,其次存入 csv,最后使用 Python 绘制成表格. 2. 安 ...

  6. python绘制对数函数_python中如何画对数函数图?

    小伙伴们还记不记得,在高考数学题后面的大题总会出现对数函数,需要我们画成对数函数图才能解答.之前小编向大家介绍对数log函数的表示方法(https://www.py.cn/jishu/jichu/21 ...

  7. 用Python绘制专业的K线图【含源代码】

    使用Python绘制一幅专业的K线图,是量化投资和金融数据分析的必备功课. 下面我将从K线图简介.数据获取.K线图绘制及成交量绘制等方面,结合源代码,一步步实现专业K线图的绘制. K线图简介 K线图又 ...

  8. Matplotlib绘制漂亮的饼状图|python绘制漂亮的饼状图

    python绘图系列文章目录 往期python绘图合集: python绘制简单的折线图 python读取excel中数据并绘制多子图多组图在一张画布上 python绘制带误差棒的柱状图 python绘 ...

  9. python画蜡烛致敬烈士_「」matplotlib 股票-用python绘制蜡烛线型k线图是用代码还是绘图工具-TOP金融网...

    用python绘制蜡烛线型k线图是用代码还是绘图工具 import matplotlib.pyplot as plt from matplotlib.dates import DateFormatte ...

最新文章

  1. C# 驱动连接 MongoDB ReplSet
  2. 10+ commonly using find command switches with example Unix/Linux
  3. 罗辑思维年终4小时演讲《时间的朋友》1000字浓缩版
  4. 通过数据库动态视图'v$',查看数据库信息
  5. 【转】c# 操作webservice(经典入门教程+MSDN必胜)(有自己修改的部分)
  6. 【翻译】Ext JS 6早期访问版本发布
  7. 其利断金前一句是什么_过来人的忠告:女孩结婚前务必要想清楚这4件事,再结婚不晚...
  8. 游戏引擎BigWorld宣布将在4.0版本支持HTML5
  9. 用C#.NET编写软件注册机
  10. [转载]揭秘骇人的湘西“赶尸”奇俗
  11. 浏览器控制台批量删除新浪微博
  12. phpwind和discuz比较
  13. PT_常见的连续型分布/均匀分布/指数分布/柯西分布/正态分布
  14. 虚拟机连接本地数据库
  15. 8个可以免费下载3D模型的网站,快收藏起来吧~
  16. 从成交量变化抓住股票涨跌
  17. LeetCode 342. 4的幂 附带《Effective C++》pdf版下载
  18. 非线性方程求根方法总结附代码(从二分法、试位法到牛顿迭代、二次插值等)
  19. 仪表盘故障图像识别_仪表自动识别方法汇总
  20. Python3将print打印的信息保存到文件

热门文章

  1. pygame基本框架
  2. Vite+Vue3+TypeScript 搭建开发脚手架
  3. android代码开启悬浮窗权限,Android 悬浮窗权限校验(示例代码)
  4. 2021年的元宇宙,1999年的互联网
  5. 八、(机器学习)-Tensorflow-CNN实现Cifar-10图像识别
  6. 恒玄BES调试笔记-BES2500如何OTA升级ANC和通透参数
  7. Zygo干涉仪面形滤波详解
  8. 一物一码(3): 一物一码之【精准营销】
  9. pom文件没有报红,但是右边的maven里面的依赖报红
  10. Java多线程模拟驾校学车——假设共有30个学员,其中20个普通学员,10个VIP学员,两类学员并行叫号练车 ,叫号要求:vip学员被叫号的概率要高,vip学习时长是普通学员的3倍数···