Использовать парсер JSON, например JSON.parse
:
function IsJsonString(str) {
try {
JSON.parse(str);
} catch (e) {
return false;
}
return true;
}
Вы так близки!
Вы можете указать цвета в списке стилей:
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)
Также обратите внимание, что метод 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)
В этом случае не очень практично, но концепция может пригодиться позже.
Рассмотрение фрейма данных 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
Вы можете объединить styles
в один список строк, как в styles
, определенный ниже. Я также определю ширины линий в lws
styles=['bs-', 'ro-', 'y^-']
lws = [2, 1, 1]
. Мы можем использовать метод plot
в testdataframe
, передавая список styles
параметру style
. Обратите внимание, что мы могли бы также передавать словарь (и, возможно, другие вещи).
Однако ширина строк не так легко обрабатывается. Сначала я захватил объект AxesSubplot
и перебирал атрибут линий, устанавливающий ширину линии.
ax = testdataframe.plot(style=styles)
for i, l in enumerate(ax.lines):
plt.setp(l, linewidth=lws[i])
Итак, я думаю, что ответ заключается в передаче цвета и стиля в одном и том же аргументе. Следующий пример работает с pandas 0.19.2:
testdataframe=pd.DataFrame(np.arange(12).reshape(4,3))
testdataframe.plot(style=['r*-','bo-','y^-'], linewidth=2.0)
К сожалению, кажется, что передача нескольких строк в качестве входа в matplotlib невозможна.