簡體   English   中英

如何使用pyplot旋轉圖的x軸和y軸

[英]How can I rotate a plot x axis and y axis using pyplot

import matplotlib.pyplot as plt
import numpy as np

x1 = [0, 0.02, 0.04, 0.08, 0.12, 0.16, 0.2]
y1 = [0.0005, 0.052, 0.0905, 0.1675, 0.2485, 0.3225, 0.4035]

plt.scatter(x1, y1)
plt.title("y-x scatter")
plt.xlabel("x")
plt.ylabel("y")
plt.show()

它的工作原理如下: 在此處輸入圖片說明

但是我的目標是這樣的圖像:

在此處輸入圖片說明

如何使用matplotlib這樣旋轉圖像?

如果您不關心刻度上是否為負數,則可以簡單地執行以下操作: plt.scatter([-y for y in y1], x1)

您還需要更改軸上的標簽,但這將在垂直軸上繪制x,在水平負值上繪制y,以便從右到左移動。

另一方面,如果要旋轉圖像,則可以將其保存並旋轉到文件,使用其他工具旋轉並讀取該文件。

如果不完全重寫,則無法旋轉圖上的工具欄。 這似乎工作量太大,所以我省去了。

除此之外,旋轉圖中的所有元素並交換x和y軸的角色沒有大問題。 特別,

  • 所有文本都可以獲取rotation參數。
  • 可以簡單地交換數據,即scatter(y,x)
  • 軸可以反轉ax.invert_xaxis()
  • 刻度線的位置可以設置在右側ax.yaxis.tick_right()
  • 可以使用普通的文本元素來模擬“標題”。

強制代碼:

import matplotlib.pyplot as plt

x1 = [0, 0.02, 0.04, 0.08, 0.12, 0.16, 0.2]
y1 = [0.0005, 0.052, 0.0905, 0.1675, 0.2485, 0.3225, 0.4035]

fig,ax=plt.subplots(figsize=plt.rcParams["figure.figsize"][::-1])
fig.subplots_adjust(left=0.1, right=0.875, top=0.9,bottom=0.125)

ax.scatter(y1, x1)

ax.set_ylabel("x", rotation=90)
ax.yaxis.tick_right()
ax.yaxis.set_label_position("right")
ax.set_xlabel("y", rotation=180)
ax.invert_xaxis()

plt.setp(ax.get_xticklabels(), rotation=90, va="top", ha="center")
plt.setp(ax.get_yticklabels(), rotation=90, va="center", ha="left")

ax.text(-0.05,0.5,"y-x scatter", ha="center", va="center",
        transform=ax.transAxes, rotation=90)


plt.show()

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM