亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Python 中繪制曲線

在 Python 中繪制曲線

滄海一幻覺 2021-11-30 16:49:13
我想繪制特定拱形形狀的曲線,下面是我使用特定值(需要使用這些值)的距離,但它繪制了直線。我也無法按照我想要的方式格式化 y 軸。這是一個對數刻度,我希望它上升到 1(就像上面的理想圖一樣)。一些幫助會很棒,謝謝!=)
查看完整描述

2 回答

?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

您的線未在對數刻度圖上拉伸的原因是因為頂部和底部的點之間沒有點。log plot不彎曲線,只是將點放在不同的比例上,它們之間的線仍然是直的。


為了改變這一點,我們在點之間添加了更多的點。結果會變得彎曲。


import matplotlib

import matplotlib.pyplot as plt

import numpy as np

from matplotlib.ticker import ScalarFormatter


# Data for plotting

t = [0.0, 62.5, 125.0, 187.5, 250, 312.5, 375, 437.5, 500]

s = [0.1, 0.005, 0.1, 0.005, 0.1, 0.005, 0.1, 0.005, 0.1]


def extendlist(l):

    master = []

    for i in range(len(l)-1):

        x = np.linspace(l[i], l[i+1], 50)

        master.extend(x)

    return master


t = extendlist(t)

s = extendlist(s)


fig, ax = plt.subplots()

ax.semilogy(t, s)


ax.set(xlabel='x axis', ylabel='y axis', title='Stuff')

plt.xlim((0,500))

plt.ylim((0.001, 1))


plt.show()

這將生成您在紙上繪制的圖形。

http://img1.sycdn.imooc.com//61a5e5b0000157f305920413.jpg

查看完整回答
反對 回復 2021-11-30
?
忽然笑

TA貢獻1806條經驗 獲得超5個贊

你可以使用interp1d


import matplotlib.pyplot as plt

import numpy as np

from scipy.interpolate import interp1d


t = [0.0, 62.5, 125.0, 187.5, 250, 312.5, 375, 437.5, 500]

s = [0.1, 0.005, 0.1, 0.005, 0.1, 0.005, 0.1, 0.005, 0.1]

tnew = np.linspace(0, 500, num=1001, endpoint=True)

f = interp1d(t, s)

plt.semilogy(tnew, f(tnew))

plt.ylim((0.001, 1))

plt.show()

http://img1.sycdn.imooc.com//61a5e5be0001ae7306460333.jpg

查看完整回答
反對 回復 2021-11-30
  • 2 回答
  • 0 關注
  • 231 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號