我正在尝试绘制以不同角度记录的传感器数据。
import pandas as pd
import matplotlib.pyplot as plt
#create dataframe, each row contains an angle and a corresponding value
df = pd.DataFrame(columns = ["angle","value"])
df.angle = [0,5,10,15,20,25,30,35,40,45,50,55,60]
df['value'] = df.apply(lambda row: 100 -row.angle/2 , axis=1)
print(df)
#plotting
plt.polar(df['angle'].values,df['value'].values)
plt.show()
Run Code Online (Sandbox Code Playgroud)
这将返回:
但我需要一个图来显示 0 度时的值为 100,5 度时的值为 97.5,依此类推。
我有一个数据框,看起来像:
sensorId 1 2 3
9b:f3:55:19:00:4b:12:00 1 7 8
bf:f3:55:19:00:4b:12:00 6 5 9
da:f3:55:19:00:4b:12:00 1 1 2
Run Code Online (Sandbox Code Playgroud)
我想用以下结构重构为数据框:
sensorId y
9b:f3:55:19:00:4b:12:00 1
9b:f3:55:19:00:4b:12:00 7
9b:f3:55:19:00:4b:12:00 8
bf:f3:55:19:00:4b:12:00 6
bf:f3:55:19:00:4b:12:00 5
bf:f3:55:19:00:4b:12:00 9
da:f3:55:19:00:4b:12:00 1
da:f3:55:19:00:4b:12:00 1
da:f3:55:19:00:4b:12:00 2
Run Code Online (Sandbox Code Playgroud)
我尝试使用df.stack(),但结果并不令人满意,因为它返回了pd.series:
9b:f3:55:19:00:4b:12:00 1 1
2 7
3 8
bf:f3:55:19:00:4b:12:00 1 6
2 5
3 9
da:f3:55:19:00:4b:12:00 1 1
2 1
3 2
Run Code Online (Sandbox Code Playgroud) 我可以这样创建一个带有每个类别颜色的自定义图例:
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
#one color per patch
#define class and colors
colors = ['#01FF4F', '#FFEB00', '#FF01D7', '#5600CC']
categories = ['A','B','C','D']
#create dict
legend_dict=dict(zip(categories,colors))
#create patches
patchList = []
for key in legend_dict:
data_key = mpatches.Patch(color=legend_dict[key], label=key)
patchList.append(data_key)
#plotting
plt.gca()
plt.legend(handles=patchList,ncol=len(categories), fontsize='small')
plt.show()
Run Code Online (Sandbox Code Playgroud)
现在我想创建一个图例,其中每个补丁都由 n 种颜色组成。
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
#multiple colors per patch
colors = [['#01FF4F','#01FF6F'], ['#FFEB00','#FFEB00'], ['#FF01D7','#FF01D7','#FF01D7'], ['#5600CC']]
categories = ['A','B','C','D']
#create dict
legend_dict=dict(zip(categories,colors))
print(legend_dict)
Run Code Online (Sandbox Code Playgroud)
A 类补丁的颜色应为“#01FF4F”和“#01FF6F”。对于 B 类,它是“#FFEB00”和“#FFEB00”等等。
我正在尝试从这三个列表中创建一个矩阵或数据框:
x = ["col1","col2","col3","col4","col5","col6","col7","col8","col9","col10"]
y = ["a","b","c"]
z = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]
Run Code Online (Sandbox Code Playgroud)
我的目标是获得一个看起来像这样的数据框:
col1 col2 col3 col4 col5 col6 col7 col8 col9 col10
a 1 2 3 4 5 6 7 8 9 10
b 11 12 13 14 15 16 17 18 19 20
c 21 22 23 24 25 26 27 28 29 30
Run Code Online (Sandbox Code Playgroud)