Matplotlib绘制象限图——支持中文、箭头、自定义轴线交点

  • 1. 效果图
  • 2. 原理
    • 2.1 绘制象限图步骤
    • 2.1 添加文字到图表
  • 3. 源码
  • 参考

这篇博客将介绍如何使用matplotlib绘制象限图,写这篇博客源于博友的提问。
首先pyechart貌似不支持绘制象限图。pyecharts支持的象形柱图demo与想要的效果相差很大。

选择了Matplotlib进行绘制。

1. 效果图

2. 原理

2.1 绘制象限图步骤

  1. 设置设置坐标轴的轴线交点(0,0)或者自己可配置,
  2. 坐标轴结束增加箭头
  3. 绘制散点图
  4. 绘制文字
  5. 绘制x,y轴标签位置
  6. 直接可视化或者保存图片

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绘制象限图——支持中文、箭头、自定义轴线交点相关推荐

  1. Python数据可视化——matplotlib绘制的图里面不能正常显示中文,提示警告的解决方法

    运行下列代码: import matplotlib.pyplot as pltedu = [0.2515,0.3724,0.3336,0.0368,0.0057] labels = ['中专','大专 ...

  2. Python可视化 | Matplotlib绘制圆环图的两种方法!

    人生苦短,快学Python!今天给大家介绍Python可视化之环形图的绘制. 环形图,也被称为圆环图.它在功能上与饼图相同,只是中间有一个空白,并且能够同时支持多个统计数据.与标准饼图相比,环形图提供 ...

  3. Matplotlib 绘制圆环图的两种方法!

    作者 | 快快 来源 | 快学Python 人生苦短,快学Python!今天给大家介绍Python可视化之环形图的绘制. 环形图,也被称为圆环图.它在功能上与饼图相同,只是中间有一个空白,并且能够同时 ...

  4. python话雷达图-python使用matplotlib绘制雷达图

    本文实例为大家分享了python使用matplotlib绘制雷达图的具体代码,供大家参考,具体内容如下 示例代码: # encoding: utf-8 import pandas as pd impo ...

  5. python画雷达图-python使用matplotlib绘制雷达图

    本文实例为大家分享了python使用matplotlib绘制雷达图的具体代码,供大家参考,具体内容如下 示例代码: # encoding: utf-8 import pandas as pd impo ...

  6. 霍兰德人格分析:利用Python第三方库matplotlib绘制雷达图

    美国约翰霍普金斯大学霍兰德教授认为,个人职业兴趣特性与职业之间应有一种内在的对应关系.根据兴趣的不同,人格可分为研究型(I).艺术型(A).社会型(S).企业型(E).传统型(C).现实型(R)六个维 ...

  7. python用matplotlib画雷达图_python使用matplotlib绘制雷达图

    本文实例为大家分享了python使用matplotlib绘制雷达图的具体代码,供大家参考,具体内容如下 示例代码: # encoding: utf-8 import pandas as pd impo ...

  8. python绘制折线图保存_Python利用matplotlib绘制折线图的新手教程

    前言 matplotlib是Python中的一个第三方库.主要用于开发2D图表,以渐进式.交互式的方式实现数据可视化,可以更直观的呈现数据,使数据更具说服力. 一.安装matplotlib pip i ...

  9. 超详细的Python matplotlib 绘制动态图

    复习回顾 在matplotlib模块中我们前面学习绘制如折线.柱状.散点.直方图等静态图形.我们都知道在matplotlib模块主要有三层脚本层为用户提供快捷的绘制图形方法,美工层接收到脚本层的命令后 ...

最新文章

  1. C++智能指针:unique_ptr详解
  2. 一次线上 JVM 调优实践,FullGC 40 次/天到 10 天一次的优化过程
  3. Flutter编译时生成代码之 code_builder
  4. linux怎么删除端口转发,linux使用rinetd快速实现端口转发
  5. Query 创建方法
  6. 如何获取filecoin_Filecoin如何获取更大的出块机会?
  7. Hibernate映射关系总结篇
  8. ubuntu关闭服务需要身份验证
  9. 编程道场_编码道场教给我有关敏捷的知识
  10. 字符串处理类库_CharString
  11. java滥用接口_接口滥用问题
  12. 代码生成器AutoGenerator
  13. 计算机面试题100题,精选面试100题及答案.doc
  14. JavaScript事件解析
  15. pv是什么意思?增长方法有哪些!
  16. ASIC Design and C Model
  17. html字大小自适应,html字体大小自适应 怎样让HTML字体自适应到移动端?
  18. 电脑进不去游戏显示重新连接服务器,幻塔无法连接服务器怎么办?游戏进不去解决方法...
  19. 回答“关于用python做机器学习工作中的random_state参数到底是个什么意思”
  20. 开发人员troubleshooting的方式

热门文章

  1. ajax发送动态字符传,如何发送ajax请求文件与其他字符串的变量?
  2. python 2x list 里面的中文打印效果为unicode 编码 的处理方法
  3. #includebits/stdc++.h包含C++的所有头文件
  4. Spark-Spark setMaster WordCount Demo
  5. pam_frpintd.so 错误修复
  6. IntPtr to bytes
  7. 2022-2028年中国复膜胶行业发展现状调查及市场前景趋势报告
  8. 进军ABP第一天:ABP理论知识
  9. memcached和redis的区别和应用场景
  10. iBatis的CRUD操作详细总结