日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

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

發布時間:2023/11/27 生活经验 74 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Matplotlib绘制象限图——支持中文、箭头、自定义轴线交点 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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绘制象限图——支持中文、箭头、自定义轴线交点的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。