-1

Pythonでグラフを応力とひずみとしてプロットする必要があります

このデータで

S.No Stress Strain
0 0.000000 0.000000
1 -3343.068596 -0.520833
2 -3359.542402 -1.041667
3 -3363.690275 -1.562500
4 -3368.874071 -2.343750
5 -3375.428713 -3.515625
6 -3377.689516 -3.955078
7 -3380.871487 -4.614258
8 -3385.274720 -5.603027
9 -3386.895892 -5.973816
10 -3389.195531 -6.529999
11 -3392.487109 -7.364273
12 -3397.171464 -8.615685
13 -3398.871128 -9.084964
14 -3401.357499 -9.788883
15 -3404.965858 -10.844761
16 -3406.306571 -11.240716
17 -3408.273823 -11.834647
18 -3411.164927 -12.725545
19 -3412.242114 -13.059631
20 -3413.836265 -13.560761
21 -3416.195332 -14.312456
22 -3419.671825 -15.439998
23 -3420.967483 -15.862826
24 -3422.889965 -16.497069
25 -3425.741024 -17.448432
26 -3426.805424 -17.805193
27 -3428.391134 -18.340335
28 -3430.751166 -19.143049
29 -3434.254359 -20.347118
30 -3435.562196 -20.798644
31 -3437.512479 -21.475933
32 -3440.417226 -22.491867
33 -3441.502922 -22.872842
34 -3443.125125 -23.444305
35 -3445.546054 -24.301499
36 -3446.451645 -24.622947
37 -3447.806274 -25.105118
38 -3449.830488 -25.828376
39 -3452.850690 -26.913262
40 -3453.980182 -27.320094
41 -3455.669727 -27.930343
42 -3458.194084 -28.845716
43 -3459.138722 -29.188980
44 -3460.552807 -29.703877
45 -3462.667548 -30.476223
46 -3465.826112 -31.634742
47 -3466.981187 -32.059390
48 -3468.710177 -32.696362
49 -3470.435183 -33.333334

余談ですが、Abaqus が txt ファイルを生成している間にライブ グラフをプロットできますか?

これは私が使用しているコードです

import numpy as np
import matplotlib.pyplot as plt

with open("test-1-14M.txt") as f:
    data = f.read()

data = data.split('\n')

x = [row.split(' ')[0] for row in data]
y = [row.split(' ')[0] for row in data]

fig = plt.figure()

ax1 = fig.add_subplot(70)

ax1.set_title("Plot title...")    
ax1.set_xlabel('your x label..')
ax1.set_ylabel('your y label...')

ax1.plot(x, y, c='r', label='the data')

leg = ax1.legend()

plt.show()
4

4 に答える 4

1

低レベルの問題を処理するnumpyツールを使用する方が簡単です:

from pylab import *
# load and change signs; transpose for data in lines :
data=-loadtxt('stress.txt',delimiter=' ',skiprows=1).T 
plot(data[2],data[1])
title( 'stress(strain)' )

応力(ひずみ)グラフを示します。データは 2 行目と 1 行目にあることに注意してください。

または、 pandas を使用してさらに直接的に:

from pandas import read_csv
(-read_csv('stress.txt',sep=' ')).plot('Strain','Stress')
于 2016-03-15T12:09:01.133 に答える
0

ようやくグラフの書き方がわかった

import numpy as np
import matplotlib.pyplot as plt


with open('3cube_pbc_compression_ss.txt') as f:
     data = np.loadtxt(f, delimiter=" ", dtype='float', comments="#", skiprows=0, usecols=[1,2])
 
x=data[:,1]
y=data[:,0]
fig = plt.figure()
fig.suptitle('Stress-Strain Curve of Hastyelloy C-276', fontsize=18, fontweight='bold')
plt.xlabel('Strain (%)',fontsize=14,fontweight='bold') 
plt.ylabel('Stress(MPa)',fontsize=14,fontweight='bold')
plt.plot(-x, -y, c='r', label='RT')
fig.savefig('SS-Curve.jpg', bbox_inches='tight',format='jpg', dpi=1000)
fig.savefig('SS-Curve.eps', bbox_inches='tight',format='eps', dpi=1000)
leg = plt.legend()
plt.show()

于 2016-03-21T04:02:38.497 に答える
0

投稿したコード

with open("test-1-14M.txt") as f:
    data = f.read()

data = data.split('\n')

x = [row.split(' ')[0] for row in data]
y = [row.split(' ')[0] for row in data]

ほぼ正しい…

  1. data見出しを含む1行目でも繰り返す場合、たとえばスライス表記を使用して最初の行を破棄したい

    data = data.split('\n')[1:]
    
  2. 構築xy、各行から間違った要素を選択している場合

    # see below for THE correct solution
    x = [row.split()[2] for row in data]
    y = [row.split()[1] for row in data]
    

    応力とひずみをプロットしたいので、インデックス2を forx1forに使用したことに注意してください...y

  3. リストは文字列のリストxyあるため、まだプロットする準備ができていません。それらを数値に変換することを忘れないでください(できれば、からリストを抽出するときdata)

    x = [float(row.split()[2]) for row in data]
    y = [float(row.split()[1]) for row in data]
    

おそらくヘルパー関数を使用して、問題を解決する他の方法がありますが、numpy試したことは簡単で、いくつかの調整を行うだけで問題なく動作します。

于 2016-03-15T13:01:08.373 に答える
-1

Church-Turing テーゼによると、すべてが計算可能であり、これも同様です。

y の値をハードコードするだけでなく、ファイルを解析することもできます。

入力データを積極的に取得していて、取得したデータを継続的にプロットしたい場合は、このスレッドを調べてください

matplotlibs の最も単純な例から適応

import matplotlib.pyplot as plt
import numpy as np

y = np.array([0, 0, 0, 1, -3343.068596, -0.520833, 2, -3359.542402, -1.041667,
              3, -3363.690275, -1.562500, 4, -3368.874071, -2.343750, 5,
              -3375.428713, -3.515625, 6, -3377.689516, -3.955078, 7,
              -3380.871487, -4.614258, 8, -3385.274720, -5.603027, 9,
              -3386.895892, -5.973816, 10, -3389.195531, -6.529999, 11,
              -3392.487109, -7.364273, 12, -3397.171464, -8.615685, 13,
              -3398.871128, -9.084964, 14, -3401.357499, -9.788883, 15,
              -3404.965858, -10.844761, 16, -3406.306571, -11.240716, 17,
              -3408.273823, -11.834647, 18, -3411.164927, -12.725545, 19,
              -3412.242114, -13.059631, 20, -3413.836265, -13.560761, 21,
              -3416.195332, -14.312456, 22, -3419.671825, -15.439998, 23,
              -3420.967483, -15.862826, 24, -3422.889965, -16.497069, 25,
              -3425.741024, -17.448432, 26, -3426.805424, -17.805193, 27,
              -3428.391134, -18.340335, 28, -3430.751166, -19.143049, 29,
              -3434.254359, -20.347118, 30, -3435.562196, -20.798644, 31,
              -3437.512479, -21.475933, 32, -3440.417226, -22.491867, 33,
              -3441.502922, -22.872842, 34, -3443.125125, -23.444305, 35,
              -3445.546054, -24.301499, 36, -3446.451645, -24.622947, 37,
              -3447.806274, -25.105118, 38, -3449.830488, -25.828376, 39,
              -3452.850690, -26.913262, 40, -3453.980182, -27.320094, 41,
              -3455.669727, -27.930343, 42, -3458.194084, -28.845716, 43,
              -3459.138722, -29.188980, 44, -3460.552807, -29.703877, 45,
              -3462.667548, -30.476223, 46, -3465.826112, -31.634742, 47,
              -3466.981187, -32.059390, 48, -3468.710177, -32.696362, 49,
              -3470.435183, -33.333334])
x = np.arange(len(y))
plt.plot(x, y)

plt.xlabel('0...n (made up as you didnt give any x data)')
plt.ylabel('your data')
plt.title('About as simple as it gets, folks')
plt.grid(True)
plt.savefig("test.png")
plt.show()

ここに画像の説明を入力

于 2016-03-15T10:49:36.437 に答える