Matplotlib绘制象限图——支持中文、箭头、自定义轴线交点
Matplotlib绘制象限图——支持中文、箭头、自定义轴线交点
- 1. 效果图
- 2. 原理
- 2.1 绘制象限图步骤
- 2.1 添加文字到图表
- 3. 源码
- 参考
这篇博客将介绍如何使用matplotlib绘制象限图,写这篇博客源于博友的提问。
首先pyechart貌似不支持绘制象限图。pyecharts支持的象形柱图demo与想要的效果相差很大。
选择了Matplotlib进行绘制。
1. 效果图
2. 原理
2.1 绘制象限图步骤
- 设置设置坐标轴的轴线交点(0,0)或者自己可配置,
- 坐标轴结束增加箭头
- 绘制散点图
- 绘制文字
- 绘制x,y轴标签位置
- 直接可视化或者保存图片
2.1 添加文字到图表
绘制文本到图表
plt.text(x=x0, y=maxy+3, s=‘数量’, ha=‘left’, va=‘baseline’, fontdict=fontdict) # y轴文字标签显示横的
- x:文本x轴坐标,可通过鼠标在图上定位获得合适的值,再生成最佳的图
- y:文本y轴坐标
- s:文本内容为‘数量’
- ha:设置字体的水平位置,可选’center’, ‘right’, ‘left’
- va:设置字体的垂直位置,可选’center’, ‘top’, ‘bottom’, ‘baseline’, ‘center_baseline’
- fontdict: 对字体属性进行个性化设置
size:设置字号
family:设置字体类型,可选’serif’, ‘sans-serif’, ‘cursive’, ‘fantasy’, ‘monospace’
weight:设置字体磅值,可选’light’, ‘normal’, ‘medium’, ‘semibold’, ‘bold’, ‘heavy’, ‘black’
3. 源码
# 绘制象限图
# 设置坐标轴的轴线交点(0,0)或者自己可配置,
# 坐标轴结束增加箭头
# 绘制散点图
# 绘制文字(支持中文)
# 绘制x,y轴标签位置
# 直接可视化或者保存图片import pandas as pd
from pylab import *print(matplotlib.get_backend())
# 设置此行,才可以进行图片保存, 此行与plt.show()互相冲突
# matplotlib.use('Agg')# 绘制教科书中的图,轴线绘制在(x0,y0)
fig, ax = plt.subplots()x0 = 50
y0 = 200
# 转移左和底部线到(x0,y0)的相对位置
ax.spines["left"].set_position(("data", x0))
ax.spines["bottom"].set_position(("data", y0))# 隐藏顶部和右边的脊柱线
ax.spines["top"].set_visible(False)
ax.spines["right"].set_visible(False)data = pd.DataFrame({"zone": ['无锡市', '常州市 ', '镇江市', ' 徐州市', '连云港市', ' 扬州市', ' 盐城市', '淮安市', '南通市 ', ' 泰州市 ', ' 宿迁市 ', ' 南京市'],"占比": [63.22, 75.25, 97.18, 23.97, 51.81, 80.93, 80.12, 67.41, 45.81, 31.75, 99, 76.9],"数量": [400, 403, 116, 318, 450, 361, 165, 408, 208, 208, 436, 344]})# 为后续绘制散点图做准备(计算最大,最小x,y轴的值)
minx = min(data["占比"])
maxx = max(data["占比"])
miny = min(data["数量"])
maxy = max(data["数量"])# 在坐标轴的末端绘制黑色三角箭头( ">k"/"^k")
# 禁用剪辑(clip_on=False)放置从轴上溢出
ax.plot(1, y0, ">k", transform=ax.get_yaxis_transform(), clip_on=False)
ax.plot(x0, 1, "^k", transform=ax.get_xaxis_transform(), clip_on=False)mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False# 绘制散点图上去
ax.scatter(data["占比"], data["数量"], color="green", marker='o', alpha=0.6) # 绿色圆形,透明度0.6\# 颜色、是否加粗,字体大小,字体采取默认
fontdict = {'color': 'black','weight': 'bold','size': 12}
plt.xlabel("占比", loc="right", fontdict=fontdict) # 设置x轴的文字标签
plt.ylabel('数量', loc="top", fontdict=fontdict) # 设置y轴的文字标签# 添加文字到图表
# - x:文本x轴坐标,可通过鼠标在图上定位获得合适的值,再生成最佳的图
# - y:文本y轴坐标
# - s:文本内容为‘数量’
# - ha:设置字体的水平位置,可选'center', 'right', 'left'
# - va:设置字体的垂直位置,可选'center', 'top', 'bottom', 'baseline', 'center_baseline'
# - fontdict: 对字体属性进行个性化设置
# size:设置字号[添加链接描述](https://blog.csdn.net/two_snails/article/details/106762783)
# family:设置字体类型,可选'serif', 'sans-serif', 'cursive', 'fantasy', 'monospace'
# weight:设置字体磅值,可选'light', 'normal', 'medium', 'semibold', 'bold', 'heavy', 'black'
# plt.text(x=x0, y=maxy+3, s='数量', ha='left', va='baseline', fontdict=fontdict) # y轴文字标签显示横的# 给每个点添加zone标签
for x, y, zone in zip(data["占比"], data["数量"], data["zone"]): # zip函数将x,y,zone数据一一对应,配对组合plt.text(x, y + 5, '%s' % zone, ha='center', va='bottom', fontdict={'color': 'blue','weight': 'normal','size': 8})
plt.show()# 保存图片,注意得设置matplotlib.use('Agg'),否则保存的图为空白
# plt.savefig('maps/xxt.jpg')
参考
- https://blog.csdn.net/two_snails/article/details/106762783
Matplotlib绘制象限图——支持中文、箭头、自定义轴线交点相关推荐
- Python数据可视化——matplotlib绘制的图里面不能正常显示中文,提示警告的解决方法
运行下列代码: import matplotlib.pyplot as pltedu = [0.2515,0.3724,0.3336,0.0368,0.0057] labels = ['中专','大专 ...
- Python可视化 | Matplotlib绘制圆环图的两种方法!
人生苦短,快学Python!今天给大家介绍Python可视化之环形图的绘制. 环形图,也被称为圆环图.它在功能上与饼图相同,只是中间有一个空白,并且能够同时支持多个统计数据.与标准饼图相比,环形图提供 ...
- Matplotlib 绘制圆环图的两种方法!
作者 | 快快 来源 | 快学Python 人生苦短,快学Python!今天给大家介绍Python可视化之环形图的绘制. 环形图,也被称为圆环图.它在功能上与饼图相同,只是中间有一个空白,并且能够同时 ...
- python话雷达图-python使用matplotlib绘制雷达图
本文实例为大家分享了python使用matplotlib绘制雷达图的具体代码,供大家参考,具体内容如下 示例代码: # encoding: utf-8 import pandas as pd impo ...
- python画雷达图-python使用matplotlib绘制雷达图
本文实例为大家分享了python使用matplotlib绘制雷达图的具体代码,供大家参考,具体内容如下 示例代码: # encoding: utf-8 import pandas as pd impo ...
- 霍兰德人格分析:利用Python第三方库matplotlib绘制雷达图
美国约翰霍普金斯大学霍兰德教授认为,个人职业兴趣特性与职业之间应有一种内在的对应关系.根据兴趣的不同,人格可分为研究型(I).艺术型(A).社会型(S).企业型(E).传统型(C).现实型(R)六个维 ...
- python用matplotlib画雷达图_python使用matplotlib绘制雷达图
本文实例为大家分享了python使用matplotlib绘制雷达图的具体代码,供大家参考,具体内容如下 示例代码: # encoding: utf-8 import pandas as pd impo ...
- python绘制折线图保存_Python利用matplotlib绘制折线图的新手教程
前言 matplotlib是Python中的一个第三方库.主要用于开发2D图表,以渐进式.交互式的方式实现数据可视化,可以更直观的呈现数据,使数据更具说服力. 一.安装matplotlib pip i ...
- 超详细的Python matplotlib 绘制动态图
复习回顾 在matplotlib模块中我们前面学习绘制如折线.柱状.散点.直方图等静态图形.我们都知道在matplotlib模块主要有三层脚本层为用户提供快捷的绘制图形方法,美工层接收到脚本层的命令后 ...
最新文章
- C++智能指针:unique_ptr详解
- 一次线上 JVM 调优实践,FullGC 40 次/天到 10 天一次的优化过程
- Flutter编译时生成代码之 code_builder
- linux怎么删除端口转发,linux使用rinetd快速实现端口转发
- Query 创建方法
- 如何获取filecoin_Filecoin如何获取更大的出块机会?
- Hibernate映射关系总结篇
- ubuntu关闭服务需要身份验证
- 编程道场_编码道场教给我有关敏捷的知识
- 字符串处理类库_CharString
- java滥用接口_接口滥用问题
- 代码生成器AutoGenerator
- 计算机面试题100题,精选面试100题及答案.doc
- JavaScript事件解析
- pv是什么意思?增长方法有哪些!
- ASIC Design and C Model
- html字大小自适应,html字体大小自适应 怎样让HTML字体自适应到移动端?
- 电脑进不去游戏显示重新连接服务器,幻塔无法连接服务器怎么办?游戏进不去解决方法...
- 回答“关于用python做机器学习工作中的random_state参数到底是个什么意思”
- 开发人员troubleshooting的方式
热门文章
- ajax发送动态字符传,如何发送ajax请求文件与其他字符串的变量?
- python 2x list 里面的中文打印效果为unicode 编码 的处理方法
- #includebits/stdc++.h包含C++的所有头文件
- Spark-Spark setMaster WordCount Demo
- pam_frpintd.so 错误修复
- IntPtr to bytes
- 2022-2028年中国复膜胶行业发展现状调查及市场前景趋势报告
- 进军ABP第一天:ABP理论知识
- memcached和redis的区别和应用场景
- iBatis的CRUD操作详细总结