1. 程式人生 > >python 實現雙縱軸(y)軸影象的繪製(中文label),解決只顯示一個折線label的問題

python 實現雙縱軸(y)軸影象的繪製(中文label),解決只顯示一個折線label的問題

資料:

原始資料中,分為第0,1,2,3列,這裡使用第1(橫軸),2列(左縱軸),3列(右縱軸)

200649.735.0229.07
200751.2533.6829.62
200854.7537.8831.39
200953.5736.2129.44
201046.0830.7720.9
201148.3231.2123.03
201252.0631.2824.47
201353.8631.3825.57
201457.133027.08

結果:

import matplotlib.pylab as plt # 匯入繪圖包
import matplotlib.pyplot as mp
from pylab import * #影象中的title,xlabel,ylabel均使用中文
import numpy as np #使用自己下載的宋體庫simsun.ttc,原始matplotlib不支援中文 myfont = matplotlib.font_manager.FontProperties(fname="simsun.ttc") mpl.rcParams['axes.unicode_minus'] = False dates,y1 = np.loadtxt('全國發病資料_可用於分析.csv', delimiter=',', usecols=(0,1), unpack=True) dates,y2 = np.loadtxt('全國發病資料_可用於分析.csv', delimiter
=',', usecols=(0,2), unpack=True) mp.gcf().set_facecolor(np.ones(3) * 240/255)#設定背景色 fig, ax1 = plt.subplots() # 使用subplots()建立視窗 ax2 = ax1.twinx() # 建立第二個座標軸 ax1.plot(dates, y1,'o-', c='orangered',label='y1', linewidth = 1) #繪製折線影象1,圓形點,標籤,線寬 ax2.plot(dates, y2, 'o-', c='blue',label='y2', linewidth = 1
) #同上 ax1.set_xlabel('時間', fontproperties=myfont,size=18) #與原始matplotlib設定引數略有不同,使用自己下載的中文宋體,引數位置不可改變 ax1.set_ylabel('第1列資料', fontproperties=myfont,size=18) ax2.set_ylabel('第2列資料', fontproperties=myfont,size=18) mp.gcf().autofmt_xdate()#自動適應刻度線密度,包括x軸,y軸 mp.legend()#顯示折線的意義 plt.show()

但是存在問題,只顯示了一個label,怎麼辦?

原因:

應該是legend()預設使用當前介面的label,理論上我們是建立了兩個介面的,也就是兩個圖層,windows系統只標記了上方的圖層的label。

改進與解決

fig, ax1 = plt.subplots() ax1.plot(dates, y1,'o-', c='orangered',label='cancer viliage num', linewidth = 1) mp.legend(loc=2)
ax2 = ax1.twinx() ax2.plot(dates, y2, 'o-', c='blue',label='waster water', linewidth = 1)mp.legend(loc=1)

說明:在mp.legend()中添加了引數loc,而對應值1,2,3,4分別對應影象的右上角,左上角,左下角,右下角

所有改進程式碼:

import matplotlib.pylab as plt # 匯入繪圖包
import matplotlib.pyplot as mp
from pylab import * #影象中的title,xlabel,ylabel均使用中文
import numpy as np

#使用自己下載的宋體庫simsun.ttc,原始matplotlib不支援中文
myfont = matplotlib.font_manager.FontProperties(fname="simsun.ttc")
mpl.rcParams['axes.unicode_minus'] = False
dates,y1 = np.loadtxt('可用於分析.csv', delimiter=',', usecols=(0,1), unpack=True)
_,y2 = np.loadtxt('可用於分析.csv', delimiter=',', usecols=(0,2), unpack=True)


mp.gcf().set_facecolor(np.ones(3) * 240/255)#設定背景色
fig, ax1 = plt.subplots() # 使用subplots()建立視窗
ax1.plot(dates, y1,'o-', c='orangered',label='y1', linewidth = 1) #繪製折線影象1,圓形點,標籤,線寬
mp.legend(loc=2)
ax2 = ax1.twinx() # 建立第二個座標軸
ax2.plot(dates, y2, 'o-', c='blue',label='y2', linewidth = 1) #同上
mp.legend(loc=1)

ax1.set_xlabel('時間', fontproperties=myfont,size=18)ax1.set_ylabel('y1', fontproperties=myfont,size=18)
ax2.set_ylabel('y2', fontproperties=myfont,size=18)
mp.gcf().autofmt_xdate()#自動適應刻度線密度,包括x軸,y軸
plt.show()

結果:


相關推薦

python 實現y影象繪製中文label解決顯示一個折線label的問題

資料:原始資料中,分為第0,1,2,3列,這裡使用第1(橫軸),2列(左縱軸),3列(右縱軸)200649.735.0229.07200751.2533.6829.62200854.7537.8831.39200953.5736.2129.44201046.0830.7720

通過python實現TCP在客戶端和伺服器上的單執行緒的程式設計

1、只支援一個客戶端訪問 伺服器: from socket import * address='127.0.0.1' #監聽哪些網路 127.0.0.1是監聽本機 0.0.0.0是監聽整個網路 port=12345 #監聽自己的哪個埠 buffsize=

Python實現刪除列表中滿足一定條件的元素示例

http://www.jb51.net/article/115953.htm 本文例項講述了Python實現刪除列表中滿足一定條件的元素。分享給大家供大家參考,具體如下: 從列表中刪除滿足一定條件的元素。 如:刪除一個列表中長度為0的元素,或者刪除列表中同時是2和3的倍數的元素。 做過高階語言程式設計的人想

python 實現自動上傳檔案到百度網盤附程式原始碼及實現過程

5、編寫AutoIt指令碼,實現檔案上傳 1.開啟scite script editor 程式碼如下: # coding=utf-8 import time from selenium import webdriver driver = webdriver.Firefox() #開啟火狐瀏覽器 dr

利用Python實現k最近鄰演算法 並識別手寫數字詳細註釋

    K最近鄰(k-Nearest Neighbor,KNN)分類演算法,是一個理論上比較成熟的方法,也是較為簡單的機器學習演算法之一。該方法的思路是:如果一個樣本在特徵空間中的k個最相似(即特徵空間中最鄰近)的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別。K最近鄰

python實現通過微信每天給女友發天氣預報超簡單程式碼+itchat+入門級爬蟲

1.前言        剛學爬蟲想寫個最簡單的小程式體會一下爬蟲的效果,原理程式碼非常簡單,僅供大家學習~2.前期準備    (1).itchat            itchat是一個非常方便簡單的python的微信介面,可以傻瓜一樣的登陸微信,傳送訊息傳送圖片等,這裡我

python實現二叉樹及其七種遍歷方式遞迴+非遞迴

1、二叉樹的遍歷方式? 前序遍歷:根左右 中序遍歷:左根右 後序遍歷:左右根 層次遍歷:從上到下,從左到右 2、python新建一個二叉樹及其七種遍歷(遞迴和非遞迴) class Node(): #節點類 def __init__(self,data =

資料結構之python實現端佇列

雙端佇列deque 雙端佇列(deque,全名double-ended queue),是一種具有佇列和棧的性質的資料結構。 雙端佇列中的元素可以從兩端彈出,其限定插入和刪除操作在表的兩端進行。雙端佇列可以在佇列任意一端入隊和出隊。 程式碼實現 """雙端

Python-OpenCV 雜項影象繪製

0x00. 繪製直線 import numpy as np import cv2 img = np.zeros((512,512,3), np.uint8) cv2.line(img,(0,0),(511,511),(255,0,0),5) cv2.imshow('ima

easyui實現tabs選項卡之間的切換顯示一個

一、建立選單項 <div class="easyui-accordion" id="wl_accordion" data-options="fit:true,border:false">

python 實現端隊列

eve iter 循環雙端隊列 else ise __init__ app col remove # 隊列兩端都可以進行push和pop操作。 push操作可以用循環雙端隊列的append,appendleft。 # pop操作使用循環雙端隊列的romove c

Python 影象處理 OpenCV 7影象平滑濾波處理

![](https://cdn.geekdigging.com/opencv/opencv_header.png) 前文傳送門: [「Python 影象處理 OpenCV (1):入門」](https://www.geekdigging.com/2020/05/17/5513454552/) [「Pyt

問題:combo顯示一個選項其他不顯示調整框的高度即可。

== .com idc 普通 內容 重新 運行 padding href 解決辦法:調整框的高度即可。 轉自:http://blog.163.com/strive_only/blog/static/89380168200971010114665/ 雖然我也是用了好一段VC的

CF E. Vasya and a Tree】 dfs+樹狀陣列給你一棵n個節點的樹每個點有一個權值初始全為0m次操作每次三個數(v, d, x)表示考慮以v為根的子樹將所有與v點距離小於等於d的點權值全部加上x求所有操作完畢後所有節點的值

題意: 給你一棵n個節點的樹,每個點有一個權值,初始全為0,m次操作,每次三個數(v, d, x)表示只考慮以v為根的子樹,將所有與v點距離小於等於d的點權值全部加上x,求所有操作完畢後,所有節點的值   首先要明確兩件事情性質1.每個人的操作只會影響到他的子孫(包括自己) 性質1.每個人的操

jquery正則表示式驗證糾正版手機號、身份證號、中文名稱

最新福利:領取阿里雲1000通用代金券   <script type="text/javascript"> // 驗證中文名稱 function isChinaName(name) { var pattern = /^[\u4E00-\u9FA5]{1,6}$/; retu

docker運維1:安裝centos7.0 docker引擎時解決lvm包衝突問題

1. 問題 centos7.0安裝docker engine時,系統有以下提示: # yum install docker-engine Running transaction check Running transaction test

機器學習筆記——基於奇異值分解SVD影象壓縮PIL

此指令碼的作用是圖片壓縮(清晰度尚可的情況下,可達到8倍以上的壓縮比),是SVD的一個應用實踐,涉及PIL、numpy庫。 (python中處理圖片的庫比較多,比如PIL、OpenCV、matplot

Android studio 多渠道打包生成一個debug包不需要多渠道debug包

多渠道打包方式,網上有很多的介紹了,這裡就不再多說了。 配置好打多渠道包,每次手機連線電腦,想執行一下測試。發現在buildout/apk目錄下生成了每個渠道的debug包。而且每執行一次,就成生一個debug包。 這樣是不是很煩。如果只想生成一個debug的包。怎麼做

利用VS建立一個遊戲3遊戲地圖繪製程式碼+註釋

首先注意的是我們要將地圖素材放置專案資料夾中。#include "stdafx.h" #include "MyGameFrame.h" //源cpp檔案引申出的標頭檔案 也可以用resource.h代替 #include <stdio.h>

UITableView設定單元格選中後顯示一個打勾的三種簡單方法僅供參考

1、第一種方法:先定位到最後一行,若選中最後一行直接退出,否則用遞迴改變上次選中的狀態,重新設定本次選中的狀態。 - (UITableViewCell*)tableView:(UITableView*)tableViewcellForRowAtIndexPath:(NSIn