改变 x 值
Changing x values
我正在绘制 CSV 中的值,我只是想知道是否可以将 x 值显示为其他内容。
例如:
我的代码是:
from cycler import cycler
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker
fig = plt.figure()
df = pd.read_csv('CSV_GM_NB_1_0_Functional_Initial_5_pt.csv', skiprows=8)
data1 = df.ix[:,19:49].T
data2 = df.ix[:,50:80].T
data3 = df.ix[:,81:115].T
data1.columns=df['SN']
data2.columns=df['SN']
data3.columns=df['SN']
ax1 = plt.subplot2grid((6,6), (0,0), rowspan=1, colspan=5)
plt.title('GM_NB')
plt.ylabel('PV')
ax2 = plt.subplot2grid((6,6), (1,0), rowspan=1, colspan=5)
plt.ylabel('PV')
ax3 = plt.subplot2grid((6,6), (2,0), rowspan=4, colspan=5)
plt.ylabel('Point Values')
plt.xlabel('DID')
ax1.plot(df.ix[:,19:49].T)
ax2.plot(df.ix[:,50:80].T)
ax3.plot(df.ix[:,81:115].T)
plt.subplots_adjust(hspace=1.0)
plt.show()
这是输出:
问题
如您所见,子图的 x 值是线性的,从 35 增加到 135。我想知道我可以简单地显示这些值从 0 开始到 100。(我不能更改内部的值CSV 和我无法更改代码,因为 35-135 的值具有相应的 y 值。
具体来说,我需要相同的 y 值,但在视觉上我想知道我是否可以将 x 值更改为从 0 开始而不从代码中提取不同的 y 值。
可能在想是否有
这样的功能
plt.xvalues(减去 35)
这有意义吗?谢谢。
只是显示从图中读取的不同值的某种方式
让我们考虑以下示例,其中 x 数据从 35 变为 135。
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams["figure.figsize"] = 4,2
#Real x data goes from 35 to 135
x = np.linspace(35,135, num=151)
y = np.sinc(np.linspace(-3*np.pi,3*np.pi, num=151))
plt.plot(x,y)
现在您想更改比例。
方法一:更改数据
这听起来很简单,如果您想将比例更改为 35,只需从 x
中减去 35:
#Method 1: change the x data
x2 = x - 35
plt.plot(x2,y)
方法 2:更改刻度标签
我们还可以更改刻度标签。因此,我们首先需要将刻度位置设置为固定值,并将刻度标签设置为其他一些发明值
#Method2:
# plot original data
plt.plot(x,y)
# set original ticks
ticks = np.arange(35,140,20) # [ 35 55 75 95 115 135]
# set ticks to original ticks,
# but tickabels (second argument) to something different
plt.xticks(ticks, ticks-35)
输出与第一种情况完全一样
我正在绘制 CSV 中的值,我只是想知道是否可以将 x 值显示为其他内容。
例如:
我的代码是:
from cycler import cycler
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker
fig = plt.figure()
df = pd.read_csv('CSV_GM_NB_1_0_Functional_Initial_5_pt.csv', skiprows=8)
data1 = df.ix[:,19:49].T
data2 = df.ix[:,50:80].T
data3 = df.ix[:,81:115].T
data1.columns=df['SN']
data2.columns=df['SN']
data3.columns=df['SN']
ax1 = plt.subplot2grid((6,6), (0,0), rowspan=1, colspan=5)
plt.title('GM_NB')
plt.ylabel('PV')
ax2 = plt.subplot2grid((6,6), (1,0), rowspan=1, colspan=5)
plt.ylabel('PV')
ax3 = plt.subplot2grid((6,6), (2,0), rowspan=4, colspan=5)
plt.ylabel('Point Values')
plt.xlabel('DID')
ax1.plot(df.ix[:,19:49].T)
ax2.plot(df.ix[:,50:80].T)
ax3.plot(df.ix[:,81:115].T)
plt.subplots_adjust(hspace=1.0)
plt.show()
这是输出:
问题
如您所见,子图的 x 值是线性的,从 35 增加到 135。我想知道我可以简单地显示这些值从 0 开始到 100。(我不能更改内部的值CSV 和我无法更改代码,因为 35-135 的值具有相应的 y 值。
具体来说,我需要相同的 y 值,但在视觉上我想知道我是否可以将 x 值更改为从 0 开始而不从代码中提取不同的 y 值。
可能在想是否有
这样的功能plt.xvalues(减去 35)
这有意义吗?谢谢。
只是显示从图中读取的不同值的某种方式
让我们考虑以下示例,其中 x 数据从 35 变为 135。
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams["figure.figsize"] = 4,2
#Real x data goes from 35 to 135
x = np.linspace(35,135, num=151)
y = np.sinc(np.linspace(-3*np.pi,3*np.pi, num=151))
plt.plot(x,y)
现在您想更改比例。
方法一:更改数据
这听起来很简单,如果您想将比例更改为 35,只需从 x
中减去 35:
#Method 1: change the x data
x2 = x - 35
plt.plot(x2,y)
方法 2:更改刻度标签
我们还可以更改刻度标签。因此,我们首先需要将刻度位置设置为固定值,并将刻度标签设置为其他一些发明值
#Method2:
# plot original data
plt.plot(x,y)
# set original ticks
ticks = np.arange(35,140,20) # [ 35 55 75 95 115 135]
# set ticks to original ticks,
# but tickabels (second argument) to something different
plt.xticks(ticks, ticks-35)
输出与第一种情况完全一样