Joe*_*erg 32 python plot pandas
我想从pandas数据框中绘制多条线,并为每条线设置不同的选项.我想做点什么
testdataframe=pd.DataFrame(np.arange(12).reshape(4,3))
testdataframe.plot(style=['s-','o-','^-'],color=['b','r','y'],linewidth=[2,1,1])
Run Code Online (Sandbox Code Playgroud)
这会引发一些错误消息:
linewidth不能用列表调用
在样式中,当在列表中定义颜色时,我不能使用's'和'o'或任何其他字母符号
还有一些东西对我来说似乎很奇怪
当我在上面的代码中添加另一个绘图命令时,testdataframe[0].plot()它将在同一个绘图中绘制这条线,如果我添加命令testdataframe[[0,1]].plot()它将创建一个新的绘图
如果我称之为testdataframe[0].plot(style=['s-','o-','^-'],color=['b','r','y'])风格列表,但没有颜色列表则可以
希望有人可以提供帮助,谢谢.
Pau*_*l H 49
你真是太近了!
您可以在样式列表中指定颜色:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
testdataframe = pd.DataFrame(np.arange(12).reshape(4,3), columns=['A', 'B', 'C'])
styles = ['bs-','ro-','y^-']
linewidths = [2, 1, 4]
fig, ax = plt.subplots()
for col, style, lw in zip(testdataframe.columns, styles, linewidths):
testdataframe[col].plot(style=style, lw=lw, ax=ax)
Run Code Online (Sandbox Code Playgroud)
另请注意,该plot方法可以获取一个matplotlib.axes对象,因此您可以进行多次这样的调用(如果您愿意):
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
testdataframe1 = pd.DataFrame(np.arange(12).reshape(4,3), columns=['A', 'B', 'C'])
testdataframe2 = pd.DataFrame(np.random.normal(size=(4,3)), columns=['D', 'E', 'F'])
styles1 = ['bs-','ro-','y^-']
styles2 = ['rs-','go-','b^-']
fig, ax = plt.subplots()
testdataframe1.plot(style=styles1, ax=ax)
testdataframe2.plot(style=styles2, ax=ax)
Run Code Online (Sandbox Code Playgroud)
在这种情况下并不实用,但这个概念可能会在以后派上用场.
piR*_*red 14
考虑数据帧 testdataframe
testdataframe = pd.DataFrame(np.arange(12).reshape(4,3))
print(testdataframe)
0 1 2
0 0 1 2
1 3 4 5
2 6 7 8
3 9 10 11
Run Code Online (Sandbox Code Playgroud)
您可以组合styles成单个字符串列表,如styles下面定义的那样.我还将定义线宽lws
styles=['bs-', 'ro-', 'y^-']
lws = [2, 1, 1]
Run Code Online (Sandbox Code Playgroud)
我们可以使用该plot方法testdataframe将列表传递styles给style参数.请注意,我们也可以传递一个字典(也可能是其他东西).
但是,线宽并不容易处理.我首先捕获AxesSubplot对象并迭代线属性设置线宽.
ax = testdataframe.plot(style=styles)
for i, l in enumerate(ax.lines):
plt.setp(l, linewidth=lws[i])
Run Code Online (Sandbox Code Playgroud)
Rex*_*zle 12
所以我认为答案在于将颜色和样式传递到同一个参数中.以下示例适用于pandas 0.19.2:
testdataframe=pd.DataFrame(np.arange(12).reshape(4,3))
testdataframe.plot(style=['r*-','bo-','y^-'], linewidth=2.0)
Run Code Online (Sandbox Code Playgroud)
不幸的是,似乎不能将多个线宽作为输入传递给matplotlib.
| 归档时间: |
|
| 查看次数: |
55213 次 |
| 最近记录: |