導航:首頁 > 編程語言 > python畫圖橫軸縱軸等比例

python畫圖橫軸縱軸等比例

發布時間:2023-08-29 13:52:56

Ⅰ 用python畫圖

今天開始琢磨用Python畫圖,沒使用之前是一臉懵的,我使用的開發環境是Pycharm,這個輸出的是一行行命令,這個圖畫在哪裡呢?

搜索之後發現,它會彈出一個對話框,然後就開始畫了,比如下圖

第一個常用的庫是Turtle,它是Python語言中一個很流行的繪制圖像的函數庫,這個詞的意思就是烏龜,你可以想像下一個小烏龜在一個x和y軸的平面坐標系裡,從原點開始根據指令控制,爬行出來就是繪制的圖形了。

  它最常用的指令就是旋轉和移動,比如畫個圓,就是繞著圓心移動;再比如上圖這個怎麼畫呢,其實主要就兩個命令:

turtle.forward(200)

turtle.left(170)

第一個命令是移動200個單位並畫出來軌跡

第二個命令是畫筆順時針轉170度,注意此時並沒有移動,只是轉角度

然後呢? 循環重復就畫出來這個圖了

好玩吧。

有需要仔細研究的可以看下這篇文章 https://blog.csdn.net/zengxiantao1994/article/details/76588580 ,這個牛人最後用這個庫畫個移動的鍾表,太贊了。

Turtle雖好玩,但是我想要的是我給定數據,然後讓它畫圖,這里就找到另一個常用的畫圖的庫了。

Matplotlib是python最著名的繪圖庫,它提供了一整套和matlab相似的命令API,十分適合互動式地行制圖。其中,matplotlib的pyplot模塊一般是最常用的,可以方便用戶快速繪制二維圖表。

使用起來也挺簡單,

首先import matplotlib.pyplot as plt 導入畫圖的圖。

然後給定x和y,用這個命令plt.plot(x, y)就能畫圖了,接著用plt.show()就可以把圖形展示出來。

接著就是各種完善,比如加標題,設定x軸和y軸標簽,范圍,顏色,網格等等,在 https://blog.csdn.net/guoziqing506/article/details/78975150 這篇文章里介紹的很詳細。

現在互聯網的好處就是你需要什麼內容,基本上都能搜索出來,而且還是免費的。

我為什麼要研究這個呢?當然是為了用,比如我把比特幣的曲線自己畫出來可好?

假設現在有個數據csv文件,一列是日期,另一列是比特幣的價格,那用這個命令畫下:

這兩列數據讀到pandas中,日期為df['time']列,比特幣價格為df['ini'],那我只要使用如下命令

plt.plot(df['time'], df['ini'])

plt.show()

就能得到如下圖:

自己畫的是不是很香,哈哈!

然後呢,我在上篇文章 https://www.jianshu.com/p/d4013d8a73de 中介紹過求Ahr999指數,那可不可以也放到這張圖中呢?不就是加一條命令嘛

plt.plot(df['time'], df['Ahr999'])

圖形如下:

但是,Ahr999指數怎麼就一條線不動啊, 原來兩個Y軸不一致,顯示出來太怪了,需要用多Y軸,問題來了。

繼續谷歌一下,把第二個Y軸放右邊就行了,不過呢得使用多圖,重新繪制

fig = plt.figure() # 多圖

ax1 = fig.add_subplot(111)

ax1.plot(df['time'], df['ini'], label="BTC price")  # 繪制第一個圖比特幣價格

ax1.set_ylabel('BTC price') # 加上標簽

# 第二個直接對稱就行了

ax2 = ax1.twinx()# 在右邊增加一個Y軸

ax2.plot(df['time'], df['Ahr999'], 'r', label="ahr999")  # 繪制第二個圖Ahr999指數,紅色

ax2.set_ylim([0, 50])# 設定第二個Y軸范圍

ax2.set_ylabel('ahr999')

plt.grid(color="k", linestyle=":")# 網格

fig.legend(loc="center")#圖例

plt.show()

跑起來看看效果,雖然丑了點,但終於跑通了。

這樣就可以把所有指數都繪制到一張圖中,等等,三個甚至多個Y軸怎麼加?這又是一個問題,留給愛思考愛學習的你。

有了自己的數據,建立自己的各個指數,然後再放到圖形界面中,同時針對異常情況再自動進行提醒,比如要抄底了,要賣出了,用程序做出自己的晴雨表。

Ⅱ 怎樣用python畫圖

思路:

1. 確定好需要畫的圖。

2. 創建一個畫布,用來畫你需要的圖。

(1)畫布大小,可以使用默認大小,也可以自定義畫布大小。

(2)畫布背景色bgcolor()。

(3)確定起點位置。

3. 畫筆的設置。

(1)畫筆的大小,顏色。

(2)畫筆運行屬性。

二、定義畫布參數

importturtleast
t.screensize(width=None,heigh=None,bg=None)#以像素為單位,參數分別為畫布的寬,高,背景色
t.screensize()#返回默認大小(400,300)
t.Screen()#也是表示默認畫布大小,注意S大寫
t.setup(w=0.5,h=0.75,startx=None,starty=None)#w,h為整數是表示像素,為小數時表示占據電腦屏幕的比例
#startx,starty坐標表示矩形窗口左上角頂點的位置,默認為屏幕中心位置

三、定義畫筆

1、畫筆的狀態

在畫布上默認有一個坐標原點為畫布中心的坐標軸,坐標原點上有一隻面朝x軸正方向小烏龜。這里我們描述小烏龜時使用了兩個詞語:坐標原點(位置),面朝x軸正方向(方向),turtle繪圖中,就是使用位置方向描述小烏龜(畫筆)的狀態。

2、畫筆的屬性

畫筆(畫筆的屬性,顏色、畫線的寬度)

(1)turtle.pensize():設置畫筆的寬度;

(2)turtle.pencolor():沒有參數傳入,返回當前畫筆顏色,傳入參數設置畫筆顏色,可以是字元串如"green","red",也可以是RGB 3元組;

>>>pencolor('brown')
>>>tup=(0.2,0.8,0.55)
>>>pencolor(tup)
>>>pencolor()
'#33cc8c'

(3)turtle.speed(speed):設置畫筆移動速度,畫筆繪制的速度范圍[0,10]整數,數字越大越快。

相關推薦:《Python入門教程》

3、繪圖命令

操縱海龜繪圖有著許多的命令,這些命令可以劃分為3種:一種為運動命令,一種為畫筆控制命令,還有一種是全局控制命令。

(1)畫筆運動命令:

(3)全局控制命令:

四、命令詳解

turtle.circle(radius,extent=None,steps=None)

描述:以給定半徑畫圓

參數:

radius(半徑);半徑為正(負),表示圓心在畫筆的左邊(右邊)畫圓;

extent(弧度) (optional);

steps (optional) (做半徑為radius的圓的內切正多邊形,多邊形邊數為steps);

舉例:

circle(50)#整圓;
circle(50,steps=3)#三角形;
circle(120,180)#半圓

五、繪圖舉例

(1)菱形太陽花

importturtleast#turtle庫是python的內部庫,直接import使用即可
defdraw_diamond(turt):
foriinrange(1,3):
turt.forward(100)#向前走100步

希望我的回答對你有幫助

Ⅲ python畫圖縱坐標

簡單的可以這樣,舉個例子,數據就直接用圖片中的一部分:

frompylabimport*
fromdatetimeimportdatetime

data_str="""2016-06-15_16:2599.7324
2016-06-15_17:2599.7323
2016-06-15_18:2599.7322
2016-06-15_19:2599.7349
2016-06-15_20:2599.7207"""

lines=data_str.split(' ')

X_labels=[]
X=[]
Y=[]
forlineinlines:
xy=line.split()
X_labels.append(xy[0])
X.append(datetime.strptime(xy[0],"%Y-%m-%d_%H:%M"))
Y.append(float(xy[1]))

figure(figsize=(8,6))
plot(X,Y,'b.-')
grid(True)
xticks(X,X_labels,rotation=90)
subplots_adjust(bottom=0.35)
savefig('graph.png')
show()

畫出來效果如上所示。

數據多了的時候有些參數要自己調整一下。

Ⅳ python畫圖:,橫坐標是點數(1到1000),縱坐標是大小不同的數值,即如何用顏色的深淺代表數值的大小

1、首先在python軟體中,創建一個響應滑鼠的自定義函數,當滑鼠在畫布上面點擊一下,就畫一個圓。

Ⅳ python turtle繪圖教程

python turtle繪圖教程如下:

1、使用海龜繪圖首先我們需要導入turtle。

畫布就是turtle展開用於繪圖區域,可以設置它的大小和初始位置。

turtle.screensize(canvwidth=None,canvheight=None,bg=None),參數分別為畫布的寬(單位像素),高,背景顏色。

在畫布上,默認有一個坐標原點為畫布中心的坐標軸,坐標原點上有一隻面朝x軸正方向小烏龜。這里我們描述小烏龜時使用了兩個詞語:坐標原點(位搏隱置),面朝x軸正方向(方向),turtle繪圖中,就是使用位置方向描述小烏龜(畫筆)的狀態。

Ⅵ Python 數據可視化:分類特徵統計圖

上一課已經體驗到了 Seaborn 相對 Matplotlib 的優勢,本課將要介紹的是 Seaborn 對分類數據的統計,也是它的長項。

針對分類數據的統計圖,可以使用 sns.catplot 繪制,其完整參數如下:

本課使用演繹的方式來學習,首先理解這個函數的基本使用方法,重點是常用參數的含義。

其他的參數,根據名稱也能基本理解。

下面就依據 kind 參數的不同取值,分門別類地介紹各種不同類型的分類統計圖。

讀入數據集:

然後用這個數據集制圖,看看效果:

輸出結果:

毫無疑問,這里繪制的是散點圖。但是,該散點圖的橫坐標是分類特徵 time 中的三個值,並且用 hue='kind' 又將分類特徵插入到圖像中,即用不同顏色的的點代表又一個分類特徵 kind 的值,最終得到這些類別組合下每個記錄中的 pulse 特徵值,並以上述圖示表示出來。也可以理解為,x='time', hue='kind' 引入了圖中的兩個特徵維度。

語句 ① 中,就沒有特別聲明參數 kind 的值,此時是使用默認值 'strip'。

與 ① 等效的還有另外一個對應函數 sns.stripplot。

輸出結果:

② 與 ① 的效果一樣。

不過,在 sns.catplot 中的兩個參數 row、col,在類似 sns.stripplot 這樣的專有函數中是沒有的。因此,下面的圖,只有用 sns.catplot 才能簡潔直觀。

輸出結果:

不過,如果換一個叫角度來說,類似 sns.stripplot 這樣的專有函數,表達簡單,參數與 sns.catplot 相比,有所精簡,使用起來更方便。

仔細比較,sns.catplot 和 sns.stripplot 兩者還是稍有區別的,雖然在一般情況下兩者是通用的。

因此,不要追求某一個是萬能的,各有各的用途,存在即合理。

不過,下面的聲明請注意: 如果沒有非常的必要,比如繪制分區圖,在本課中後續都演示如何使用專有名稱的函數。

前面已經初步解釋了這個函數,為了格式完整,這里再重復一下,即 sns.catplot 中參數 kind='strip'。

如果非要將此函數翻譯為漢語,可以稱之為「條狀散點圖」。以分類特徵為一坐標軸,在另外一個坐標軸上,根據分類特徵,將該分類特徵數據所在記錄中的連續值沿坐標軸描點。

從語句 ② 的結果圖中可以看到,這些點雖然縱軸的數值有相同的,但是沒有將它們重疊。因此,我們看到的好像是「一束」散點,實際上,所有點的橫坐標都應該是相應特徵分類數據,也不要把分類特徵的值理解為一個范圍,分散開僅僅是為了圖示的視覺需要。

輸出結果:

④ 相對 ② 的圖示,在於此時同一縱軸值的都重合了——本來它們的橫軸值都是一樣的。實現此效果的參數是 jitter=0,它可以表示點的「振動」,如果默認或者 jitter=True,意味著允許描點在某個范圍振動——語句 ② 的效果;還可設置為某個 0 到 1 的浮點,表示許可振動的幅度。請對比下面的操作。

輸出結果:

語句 ② 中使用 hue='kind' 參數向圖中提供了另外一個分類特徵,但是,如果感覺圖有點亂,還可以這樣做:

輸出結果:

dodge=True 的作用就在於將 hue='kind' 所引入的特徵數據分開,相對 ② 的效果有很大差異。

並且,在 ⑤ 中還使用了 paletter='Set2' 設置了色彩方案。

sns.stripplot 函數中的其他有關參數,請讀者使用幫助文檔了解。

此函數即 sns.catplot 的參數 kind='swarm'。

輸出結果:

再繪制一張簡單的圖,一遍研究這種圖示的本質。

輸出結果:

此圖只使用了一個特徵的數據,簡化表象,才能探究 sns.swarmplot 的本質。它同樣是將該特徵中的數據,依據其他特徵的連續值在圖中描點,並且所有點在默認情況下不彼此重疊——這方面與 sns.stripplot 一樣。但是,與之不同的是,這些點不是隨機分布的,它們經過調整之後,均勻對稱分布在分類特徵數值所在直線的兩側,這樣能很好地表示數據的分布特點。但是,這種方式不適合「大數據」。

sns.swarmplot 的參數似乎也沒有什麼太特殊的。下面使用幾個,熟悉一番基本操作。

在分類維度上還可以再引入一個維度,用不同顏色的點表示另外一種類別,即使用 hue 參數來實現。

輸出結果:

這里用 hue = 'smoker' 參數又引入了一個分類特徵,在圖中用不同顏色來區分。

如果覺得會 smoker 特徵的值都混在一起有點亂,還可以使用下面方式把他們分開——老調重彈。

輸出結果:

生成此效果的參數就是 dodge=True,它的作用就是當 hue 參數設置了特徵之後,將 hue 的特徵數據進行分類。

sns.catplot 函數的參數 kind 可以有三個值,都是用於繪制分類的分布圖:

下面依次對這三個專有函數進行闡述。

Ⅶ Python matplotlib之函數圖像繪制、線條rc參數設置

為避免中文顯示出錯,需導入matplotlib.pylab庫

1.2.1 確定數據

1.2.2 創建畫布

1.2.3 添加標題

1.2.4 添加埋雀x,y軸名稱

1.2.5 添加亮液段x,y軸范圍

1.2.6 添加x,y軸刻度

1.2.7 繪制曲線、圖例, 並保存圖片
保存圖片時,dpi為清晰度,數值越高越清晰。請注意,函數結尾處,必須加plt.show(),不然圖像不敬譽顯示。

繪制流程與繪制不含子圖的圖像一致,只需注意一點:創建畫布。

合理調整figsize、dpi,可避免出現第一幅圖橫軸名稱與第二幅圖標題相互遮蓋的現象.

2.2.1 rc參數類型

2.2.2 方法1:使用rcParams設置

2.2.3 方法2:plot內設置

2.2.4 方法3:plot內簡化設置
方法2中,線條形狀,linestyle可簡寫為ls;線條寬度,linewidth可簡寫為lw;線條顏色,color可簡寫為c,等等。

Ⅷ python中plot怎麼設置橫縱坐標名稱

用plot畫二維圖像時,默認情況下的橫坐標和縱坐標顯示的值有時達不到自己的需求,需要藉助xticks()和yticks()分別對橫坐標x-axis和縱坐標y-axis進行設置。

import numpy as np

import matplotlib.pyplot as plt

x = range(1,13,1)

y = range(1,13,1)

plt.plot(x,y)

plt.show()

此時的x軸和y軸都是只顯示偶數,其它的奇數未顯示,這樣在展示實驗效果或放入文章中都會影響其可讀性。

為了設置坐標軸的值,增加其可讀性,有多種方法。這里介紹的是matplotlib的函數xticks()和yticks()。


(8)python畫圖橫軸縱軸等比例擴展閱讀

基本用法:

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

# 生成x軸上的數據:從-3到3,總共有50個點

x = np.linspace(-1, 1, 50)

# 定義一個線性方程

y1 = 2 * x + 1

# 定義一個二次方程

y2 = x ** 2

# 設置x軸的取值范圍為:-1到2

plt.xlim(-1, 2)

# 設置y軸的取值范圍為:-1到3

plt.ylim(-1, 3)

# 設置x軸的文本,用於描述x軸代表的是什麼

plt.xlabel("I am x")

# 設置y軸的文本,用於描述y軸代表的是什麼

plt.ylabel("I am y")

plt.plot(x, y2)

# 繪制紅色的線寬為1虛線的線條

plt.plot(x, y1, color='red', linewidth=1.0, linestyle='--')

# 顯示圖表

plt.show()

Ⅸ 怎麼用python繪圖

你可以使用numpy和matplotlab這兩個庫來實現的你功能。

你的圖可以參考:

http://matplotlib.org/examples/pylab_examples/histogram_percent_demo.html

importmatplotlib
fromnumpy.randomimportrandn
importmatplotlib.pyplotasplt
frommatplotlib.tickerimportFuncFormatter

defto_percent(y,position):
#Ignorethepassedinposition.
#ticklocations.
s=str(100*y)

#
ifmatplotlib.rcParams['text.usetex']==True:
returns+r'$\%$'
else:
returns+'%'

x=randn(5000)

#Makeanormedhistogram.It'llbemultipliedby100later.
plt.hist(x,bins=50,normed=True)

#_percent.Thismultipliesallthe
#defaultlabelsby100,makingthemallpercentages
formatter=FuncFormatter(to_percent)

#Settheformatter
plt.gca().yaxis.set_major_formatter(formatter)

plt.show()

最主要的就是x軸和y軸的處理,我按照對數算了一下你提供的數據,好像和這個圖效果不一樣。


如果解決了您的問題請採納!
如果未解決請繼續追問

閱讀全文

與python畫圖橫軸縱軸等比例相關的資料

熱點內容
36位單片機 瀏覽:428
英雄聯盟山東伺服器地址 瀏覽:212
sd伺服器什麼意思 瀏覽:617
thinkphp去indexphp 瀏覽:62
電腦顯示連接未加密 瀏覽:193
zao伺服器怎麼修改 瀏覽:244
php使用jsapi調起支付 瀏覽:891
vivo雲伺服器網 瀏覽:722
cmd遠程連接命令行 瀏覽:961
黑馬python講義 瀏覽:133
php高並發測試 瀏覽:88
第二屆程序員節開幕式 瀏覽:84
運維程序員腳本 瀏覽:371
塑源碼燕窩的安全性 瀏覽:176
作業調度採用高響應比優先調度演算法 瀏覽:160
和平精英如何切換蘋果到安卓 瀏覽:532
資料庫調用表單的命令 瀏覽:923
程序員技能大賽 瀏覽:11
什麼app買品牌衣服 瀏覽:15
手機看世界名著哪個app好 瀏覽:495